목록Language/[Kotlin] (5)
Nuke Olaf - Log Store
0. 코루틴 Coroutine 과 비동기 프로그래밍 coroutine 은 비동기 처리를 하는데 사용되는 동시 실행 디자인 패턴(방법론에 가깝다)이다. 코틀린과 이름이 비슷하지만, 코틀린 뿐만 아니라 파이썬, C#, Go, Javascript 등 여러 언어에서 지원하고 있는 개념이다. Android 에서는 비동기 프로그래밍을 위한 방법으로 coroutine 을 제안한다. 멀티 스레딩을 처리할 수 있는 현재의 프레임 워크는 thread-safe excution 을 보장하는 간단한 방법이 없기 때문에, 그 이름도 유명한 콜백 지옥을 마주치게 된다. 나는 retrofit 을 이용한 서버와의 통신 과정에서 콜백 지옥이라는 것에 대해 알게 되었다. 처음엔 이 "비동기" 라는 개념을 제대로 이해하지 못해서 레트로핏을..
Kotlin Standard Library 는 collection 에서 유용하게 사용할 수 있는 기능들을 제공한다. 오늘은 그중에서 map 과 filter 에 대해 공부해보았다. 1. map kotlin-stdlib/kotlin.collections/map map 은 원소를 원하는 형태로 변환한 List 를 반환한다. Returns a list containing the results of applying the given transform function to each element in the original array. val numbers = listOf(1, 2, 3) println(numbers.map { it * it }) // [1, 4, 9] * map 응용 data class Movie..
1. Kotlin 의 data class 란? 데이터 보관을 목적으로 사용하는 클래스 프로퍼티에 대한 getter(), setter(), equals(), hashCode(), toString(), copy(), componentN() 메소드를 컴파일 시점에 자동으로 생성한다. class 앞에 data 를 붙여 정의한다. 2. Kotlin 의 data class 를 사용하는 이유 코딩을 하다보면, data 를 보관하는것이 주 목적인 클래스를 만들어야 하는 상황이 있다. 그러한 클래스들에는 아래와 같이 거의 필수적으로 작성되는 기능들이 있다. getters(), setters(), equals(), hashcode(), toString(), copy(), componentN() 이러한 기능들을 데이터 클래..
ArrayList 와 mutableListOf 의 차이 val a = mutableListOf() val b = ArrayList() Kotlin 공홈에 가보면, ArrayList 는 MutableList 인터페이스를 상속받은 구현체임을 알 수 있다. class ArrayList : MutableList, RandomAccess 명시적으로 처음부터 MutableList 중 특별히 ArrayList 를 원하는 경우에는 ArrayList 로 선언하고, List 이지만 수정, 삭제가 가능한(Mutable) 한 리스트를 원하는 경우에는 List 로 선언하는 것이 좋다고 한다. 어차피 Compile Time 에는 ArrayList 든 MutableList 든 List 로 인식되므로 큰 차이는 없다고 함. The ..
코틀린 표준 라이브러리는 간결하고 명료한 코드를 작성하는 데 도움을 주는 확장 함수(extension function)들을 제공한다. 확장함수는 람다(lamda) 를 인자로 받아 동작하며, 확장함수를 실행하는 주체를 수신자 또는 수신자 객체라고 한다. 확장 함수에는 범위 지정 함수(scope-functions) let, with, run, apply, also 가 있다. 람다식이 제공된 객체에서 범위 지정 함수를 호출하면 임시 범위가 형성되는데, 이 범위에서 이름없이 객체에 접근할 수 있다. 이러한 기능을 가진 함수를 범위 지정 함수라고 한다. 이 다섯가지 범위 지정 함수들은 기본적으로 동일한 기능을 수행한다. 객체에서 코드 블럭을 실행하는 기능이다. let, with, run, apply, also 의..