Kotlin
-
Const val과 val의 차이Kotlin 2021. 9. 3. 14:08
토이 프로젝트에서 라이브러리 버전을 따로 Versions라 불리는 싱글톤 파일(Kotlin Object)에 저장하는데요, 이렇게 되면 버전을 한 곳에서 관리할 수 있어서 이해하기 편하고, 각 라이브러리에 대해 세부적으로 구분할 수 있습니다. 그런데 위에서 보다시피, IDE에서는 val로 값을 할당하는 것보다 const val 사용을 권장하고 있는데요. 이에 대해 궁금증이 생겨 Stack Overflow에 검색해봤습니다. val도 immutable한 값, const val도 immutable한 값인데 어떤 차이가 있는지 궁금했거든요. https://stackoverflow.com/questions/37595936/what-is-the-difference-between-const-and-val What is..
-
Kotlin의 고차 함수Kotlin 2021. 5. 23. 02:08
코틀린의 함수는 일급 객체라는 특성이 있습니다. 이 일급 객체란 다음과 같은 특징을 지닙니다. 1. 함수가 변수나 자료 구조로 저장될 수 있다 2. 다른 함수의 인자로 사용될 수 있다 3. 다른 함수의 리턴 타입으로 사용될 수 있다 val valueFunction : () -> Unit = { println("test")} fun testFunction() { println("test") } val a = testFunction() val b = valueFunction 이러한 일급 객체라는 특징을 바탕으로, 코틀린에서는 고차 함수(High Order Function)이라는 개념이 있는데요. 이 고차 함수는 다른 함수를 파라미터로 가지거나, 특정 함수를 리턴하는 함수를 말합니다. 코틀린 공식 문서에서는 ..
-
Kotlin의 Null 처리Kotlin 2021. 5. 17. 00:55
개요 Kotlin의 가장 큰 장점 중 하나는 Null 처리를 비교적 안전하고, 간결하게 할 수 있다는 것인데요. Null이 반드시 필요한 상황도 있겠지만, 함수에서 불필요하게 Null을 return 한다거나, 특정 데이터를 사용할 때 Null이 들어있으면 Runtime에서 NPE (Null Pointer Exception)이 발생할 수 있습니다. 이러한 문제는 프로그램이 거대해질수록 더 도드라지는 현상인데요. 많은 개발자들이 Null 처리에서 굉장히 신경을 씁니다. Kotlin은 이러한 Null 처리를 더 편하고 안전하게 하기 위해서 여러 장치들을 뒀는데, 오늘은 그 중 대표적인 몇가지에 대해서 알아보겠습니다. Nullable type과 non-null type Kotlin을 사용하다보면 아래와 같은 타..
-
코틀린 수신 객체 지정 람다 : with와 applyKotlin 2020. 8. 7. 15:48
이 글은 'Kotlin in Action' 을 보고 공부한 내용을 정리하고자 작성한 글입니다. 더 자세한 내용은 해당 책을 참고하시기 바랍니다. 개요 코틀린을 사용하다보면 처음 접하는 생소한 메소드나 예약어가 있습니다. 오늘 소개하려는 with와 apply도 그 중 하나죠. 안드로이드 프레임워크에서도 많이 사용되는 메소드다보니 이 메소드들을 볼 수 있는 기회는 많았으나 따로 찾아봐도 어떻게 사용해야하는지 잘 와닿지 않았습니다. 또, 이 두 메소드를 잘 사용하면 진짜 코틀린답게 코드를 짜는 것처럼 보인다고 해야하나..뭔가 코드 작성을 잘 하는 것처럼 보이기도 했습니다. 어쨌든 이번에 Kotlin in Action을 공부하면서 좋은 내용이 있어 정리하고자 합니다. 여기서 말하는 수신 객체 지정 람다가 개인적..
-
[코틀린을 다루는 기술] Kotlin에서의 재귀 함수 사용Kotlin 2020. 8. 7. 14:31
이 글은 '길벗'사의 '코틀린을 다루는 기술'을 보고 작성한 글입니다. 더 자세한 내용은 해당 책에서 참고하시면 좋을 것 같습니다. 재귀와 공재귀, 꼬리 호출 만약, 팩토리얼 함수를 구현하다고 해볼까요? fun factorial(n: Int): Long = if(n == 1) n.toLong() else n * factorial(n-1) fun main() { val num = 10 val result: Long = factorial(num) println("Factorial: $num -> $result") } 일반적으로 알고 있는 재귀를 통해 팩토리얼을 구현하면 이런 형태가 될 것입니다. 하지만 현재 코드에서 팩토리얼은 10번 호출되고 이 함수의 문맥을 유지하기 위해 프로그램은 팩토리얼 함수가 가진 ..
-
[코틀린을 다루는 기술] 코틀린 함수 정리Kotlin 2020. 7. 31. 15:13
이 글은 길벗 사의 '코틀린을 다루는 기술' 을 읽으면서 정리한 포스팅입니다. 더 자세한 내용은 '코틀린을 다루는 기술' 책에서 찾아보시면 좋을 것 같습니다. 서론 디프만 8기에서 코틀린 스터디를 진행중입니다. 이번 스터디에서는 '코틀린을 다루는 기술'이라는 책을 토대로 코틀린 사용법과 활용도를 높이고자 하는 목표를 가지고 있습니다. 특히 단순히 항상 쓰던 문법만이 아닌, 더욱 '코틀린스럽게', '코틀린답게' 코딩을 하도록 실력을 키우는 것이 중요하다고 생각합니다. 순수 함수 이 책의 초반에서 가장 강조하는 부분은 안전한 프로그래밍을 하는 것입니다. 안전한 프로그래밍을 하기 위한 여러 방법들이 있는데, 3장 함수에서는 계산 시 순수 함수만 사용하는 것과 계산 결과를 외부 세계에서 사용하려면 순수 효과만 ..
-
[Kotlin] 배열 사용법 정리Kotlin 2020. 2. 20. 12:30
Java의 배열 선언 int[] i_array; int mArray[]; 자바에서는 두가지 방법으로 배열을 선언할 수 있는데요. 타입[ ] 변수; 타입 변수[ ]; 대괄호 [ ]는 배열 변수를 선언하는 기호로 사용되는데 타입 뒤에 붙을 수도 있고 변수 뒤에 붙을 수도 있습니다. 배열을 선언하면서 바로 초기화를 할 수도 있고, 선언만 하고 나중에 초기화를 할 수도 있습니다. int[] i_array = {1,2,3,4,5}; Arrays.fill(i_array,1); for(int i=0; i