when 문 : https://kotlinlang.org/docs/control-flow.html#when-expression 최신 언어들은 switch-case 문을 안쓰는 추세다. 대신 더 유연하고 진보적인 when문이 생김. when문은 switch-case와 유사하게 조건 표현식에 따라 여러 경우의 수에 대해 처리를 달리 해주는 표현식이다. swich 문과 다르게 break나 continue가 없다. 대신 순차적으로 조건을 체크하면서 만족하는 브랜치를 찾아 실행하게 된다. when은 그냥 statement로도 쓰일 수 있지만, expression으로 사용될 수도 있다….
[태그:] kotlin
안드로이드 빌드 구성하기 #3
Code block Pro 자꾸 에러나서 짜증나네. 어쩔 수 없이 새로운 포스트로 넘어옴. Filter variants flavor dimension을 사용하면 모든 조합을 사용하므로 build variant가 매우 많아질 수 있는데, 필요없는 것까지 생성될 수 가 있다. 이경우, beforeVariants { } 블럭을 이용하면 된다. 예제를 보자. 위와 같이 작성하면, “minApi21″에 “demo”버전은 build variant를 생성하지 않게된다. Source set 만들기 기본적으로 안드로이드…
Android: Kapt to KSP
공식 문서 Migrate from kapt to KSP 에 잘 설명되어 있다. Kapt Kapt는 the Kotlin Annotation Processing Tool 의 약자로 Java Annotation을 코틀린에서 사용가능하도록 만들어준다. 결과적으로 Kotlin 코드에서 Annotation들의 사용이 가능해진다. 예를 들면, Room Database를 사용시 다음과 같은 Dao코드를 필요로 하는데, @Dao, @Query 등이 코드에 부가적으로 달려있는 annotation이며 Kapt는 이를 해석하고 필요한 코드를 생성하는 역할을…
Kotlin : Flow Part.2 (Shared Flow, State Flow)
안드로이드에서 Flow로 읽어오는 데이터는 UI에 사용될 시, 주로 viewmodel에 저장하는 livedata형태로 변환해서 사용하게 된다. UI 업데이트는 observable한 데이터를 필요로 하기 때문이다. Flow는 cold stream이기 때문에 observable한 형태는 불가능하다. 옵저버 패턴은 다른말로 발행-구독(Publisher-Subscriber) 모델로 말하기도 하는데, 발행하는 쪽이 데이터가 바뀔 때마다 구독자들에게 브로드 캐스팅을 해야하기 때문에, hot stream 형태로 구현되어야 한다. 만약, livedata를 사용하지 않는다면? Flow만으로는…
Kotlin : Flow Part. 1
Reactive Stream규격의 Kotlin 구현. Asynchronouse cold stream. Asynchronouse 하게 동작하는게 코루틴과 찰떡으로 돌아간다. 데이터 스트림이라고 한다면, 한쪽(Producer)에서는 소스 데이터를 계속 넣어주고 이 데이터들이 일련의 파이프라인을 따라 처리된 후, 맞은편(Consumer)에서 데이터를 빼가는 모습을 생각할 수 있다. 주로 파일처리등의 대용량 데이터의 처리에 사용되지만, 이미 안드로이드에서 범용적으로 사용하고 있듯, 비동기적으로 데이터를 처리하는 reactive programming 형태에서는 데이터의 크기와 상관없이…