일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- TEST
- Hilt
- 백준
- textfield
- Coroutines
- Codeforces
- android
- pandas
- 쿠링
- androidStudio
- architecture
- Compose
- Kotlin
- livedata
- 코루틴
- Coroutine
- ProGuard
- MyVoca
- Python
- 코드포스
- AWS
- boj
- Gradle
- 암호학
- activity
- Rxjava
- MiTweet
- GitHub
- relay
- Today
- Total
목록Primary/Kotlin (39)
이동식 저장소
2년 전 글에서 sealed class와 enum class에 대해 간략하게 다룬 적이 있다. [Kotlin] sealed class vs. enum classKotlin을 처음 배울 때는 ``enum class``와 ``sealed class``를 혼동하곤 했다. enum을 구현할 떄 ``enum class`` 대신 ``sealed class``를 써도 되지 않나? 결론 ``sealed class``를 써도 되지만, 바람직한 사용법은 아니다thinking-face.tistory.com위 글에서는 enumerated value를 구현하기 위해 ``sealed class``를 사용할 필요가 없다는 결론을 내렸다. 사실 당연하다. ``enum class``가 멀쩡히 존재하기 때문이다. 그러나 ``enum ..
kapt란?Java annotation processor를 Kotlin에서 사용할 수 있게 해주는 도구이다. Dagger나 Data Binding 등을 Kotlin 프로젝트에서도 사용할 수 있다는 것. 안드로이드에서는 대표적으로 Hilt, Room 등의 라이브러리와 함께 사용한다. 내부적으로는 annotation 처리가 필요한 클래스마다 Java stub을 만드는 방식으로 구현되어 있다. 그런데 이 과정에서 Kotlin 코드를 Java로 변환하고, 변환된 코드에 Java annotation processor를 적용하기 때문에, 코드를 거의 두 번 컴파일하는 셈이다. 당연히 빌드 속도에는 좋지 않다. kapt의 단점을 해결하기 위해 KSP(Kotlin Symbol Processing)가 개발되었다. KSP..
Kotlin K2 컴파일러가 드디어 stable 출시되었다! 주요 변경점들을 하나씩 알아보자.Kotlin 2.0.0 변경점그 외의 변경점 중 재밌어 보이는 것들을 정리해 보았다. What's new in Kotlin 2.0.0 | Kotlin kotlinlang.orgSmart cast 확대Smart cast는 비교문 등에 의해 변수가 자동으로 형변환되는 것을 말한다. 예를 들어 if 조건문에서 어떤 변수가 null이 아니라는 것을 확인했다면, if문 안에서는 해당 변수가 non-null로 간주된다. Kotlin 2.0에서는 이것이 확대되어, 컴파일러가 비교문을 통해 변수의 타입을 자동으로 추출하는 등 고급 smart cast 기능을 제공한다. class Cat { fun purr() { ..
Kotlin의 ``mutableMapOf()`` 함수는 내부적으로 ``LinkedHashMap()``을 반환한다. /** * Returns an empty new [MutableMap]. * * The returned map preserves the entry iteration order. * @sample samples.collections.Maps.Instantiation.emptyMutableMap */ @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun mutableMapOf(): MutableMap = LinkedHashMap() Kotlin ``LinkedHashMap``은 Java의 ``LinkedHashMap``으로 ``ty..
Job 코루틴에서 백그라운드 작업을 나타내는 인터페이스이다. 인터페이스이긴 하지만 동명의 함수로 Job 객체를 만들 수 있다. interface Job : CoroutineContext.Element public fun Job(parent: Job? = null): CompletableJob = ... Job은 부모-자식 관계로 정렬될 수 있다. 부모 Job이 종료되면 자식 Job도 재귀적으로 모두 종료되며, 자식 Job에서 exception이 발생하면 그 Job의 부모도 즉시 종료되고, 부모의 모든 자식이 재귀적으로 종료된다. 부모의 cancel과 다르게 자식의 failure는 부모 쪽으로 전파되지는 않으며, 자신의 부모에만 영향을 미친다. Job 객체를 얻는 방법은 크게 두 가지이다. 위에서처럼 ``..