Kotlin
-
Kotlin Delegation 사용과 예시Kotlin 2022. 6. 5. 23:30
다른 언어들에 비해 코틀린이 제공해주는 독특한 기능이 있는데요. 바로 델리게이션입니다. 델리게이션을 지칭하는 위임 패턴은 이미 전통적인 디자인 패턴 중 하나이지만, 코틀린은 이러한 위임 패턴을 아주 간단히 구현할 수 있게 만들어, 언어 차원에서 위임 패턴 사용을 적극 권장하고 있습니다. 안드로이드 개발에서도 by lazy, by remember 등의 위임 패턴을 이미 많이 사용하는데요. 오늘은 코틀린 델리게이션에 대해 간단히 알아보는 시간을 가져볼까 합니다. 상속과 위임이란 무엇일까? 코드의 재사용성은 프로젝트가 커질 수록 매우 중요해집니다. 재사용성을 늘리는 기법은 아주 많은데요, 그 중 상속과 위임 패턴도 아주 대표적인 재사용성을 늘리는 기법입니다. 객체지향 개발 방식에서는 상속을 자주 사용하게 되는..
-
Kotlin Collection - 3.SequencesKotlin 2021. 10. 24. 18:47
Kotlin Collection은 Sequence라는 Iterable과 대조되는 Container Type을 제공하는데요, 일반적인 Iterable 방식의 Collection과 동작 방식에서 조금의 차이가 있습니다. Kotlin Collection에서 일반적인 함수형 연산자를 사용하면 Eager Evaluation 방식으로 동작합니다. 여러 함수형 연산자가 체이닝되있을 때, 각 단계를 완전히 수행하고 그 다음 단계를 진행하는 방식입니다. 즉 Collection의 원소에 대해 모두 처리하고 그 다음 연산자를 적용하는 방식이죠. 반면에 Sequence는 Lazy Evaluation 방식으로 동작합니다. 여러 함수형 연산자가 체이닝되있을 때, 원소 하나씩 체이닝 된 연산자를 적용해서 결과를 리턴합니다. 이렇게..
-
Kotlin Collection - 2.Transformation Operation(map, zip, flatten)Kotlin 2021. 10. 17. 19:33
저번 게시물에 이어 Kotlin Collection의 가장 매력적인 요소라 생각하는 Transformation Operation에 대해서 정리해보겠습니다. - Kotlin Transformation Operation란? Kotiln은 Collection을 다양한 형태로 변형할 수 있는 확장 함수를 제공합니다. Kotlin을 사용해보셨다면 접해봤을 map, filter, flatMap과 같은 것들입니다. 이러한 확장 함수들을 사용해서 반복문과 조건문에서 벗어나 아주 간결하고 명확한 코드를 작성할 수 있습니다. 람다와 체이닝 등의 개념들이 이러한 목표를 달성하는데 도움을 줍니다. Transformation Operation은 연속해서 적용할 수 있고, 람다식을 인자로 전달해서 동작하기 때문이죠. 이러한 오퍼..
-
Kotlin Collection - 1. 컬렉션 생성Kotlin 2021. 10. 11. 12:06
코틀린의 컬렉션은 자바의 컬렉션과 구조상 매우 흡사합니다. Iterable을 상속받는 Collection이 있고 그걸 다시 상속받는 List와 Set, 그리고 별도로 Map이 존재하는 구조입니다. 단, 자바와 다른점은 Mutable이 별도로 구분되있다는 점입니다. 즉, Mutable은 변경가능한 컬렉션을 말하고, Mutable이 붙지않은 컬렉션은 변경이 불가능한 것을 말합니다. 이렇게 기본적인 타입으로 Mutable과 Immutable을 구분한 것은 멀티 스레딩 환경에서 Thread-Safe하게 컬렉션을 다루기 위해서라고 예상됩니다. 오늘은 코틀린 컬렉션의 생성 방법에 대해서 알아보겠습니다. 생성자 및 사용법 - List val readOnlyList = listOf("a", "b", "cde") val..
-
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을 공부하면서 좋은 내용이 있어 정리하고자 합니다. 여기서 말하는 수신 객체 지정 람다가 개인적..