개발/Kotlin(17)
-
Kotlin flow
Flow?비동기 및 스트림기반 데이터 처리를 위한 반응형 프로그래밍 모델을 제공. 네트워크 요청 / db쿼리 또는 ui이벤트와 같은 비동기 작업 처리 Kotlin flow basicProducer : 값을 비동기적으로 생성하는 함수 / 코루틴. emit()으로 방출Consumer : 흐름에서 방출된 값을 소비하는 함수 / 코루틴.Operator : flow에서 다른 작업을 변환, 필터링, 결합 Collector : flow에서 내보낸 값을 받아 처리하는 함수 Kotlin flow의 유형Cold Flow : flow builder사용. 값을 collect하시 전까지 생성xFlow val simpleFlow = flow { for (i in 1..3) { delay(1000) // pretend we're ..
2023.07.25 -
reified + inline
reified 키워드 reified 키워드란…? inline과 함께 쓰이며, 런타임시 generic 타입을 알 수 있게 하는 키워드임! fun printGenerics(value: T, classType: Class) { when (classType) { String::class.java -> { println("String : $value") } Int::class.java -> { println("Int : $value") } } } printGenerics("print generics function", String::class.java) printGenerics(1000, Int::class.java) 원래 generic 사용하면 이렇게 타입 정보를 넘겨야하지만, 위의 키워드를 사용하면 inlin..
2023.05.03 -
Kotlin Infix func
Kotlin Infix function 이란? ; 두 개의 객체 중간에 들어가게 되는 함수 형태 ex) val day2 = mapOf("Monday" to "월요일", "Tuesday" to "화요일") 개발자가 직접 정의하는 Infix func infix fun dispatcher.함수명(receiver): 리턴타입 { } 위와 같은 형태로 사용 가능. 위의 예시와 비교하자면, Monday가 Dispatcher고, 월요일이 receiver ex) infix fun String.add(other:String): String { return this + other } class내에 정의하면 dispatcher 생략 가능 class StringAcc { var data = "" infix fun add(re..
2023.05.03 -
Retrofit to Ktor
ktor을 써야하는 이유 💡 KMM을 사용해서 앱을 만든다고 생각해보자. ios에서는 java/android 기반인 Retrofit을 사용할 수 없다 .근데 ktor은 되는 모양…? 아래와 같이 종속성을 추가해줍시다 plugins { ... kotlin("plugin.serialization") version "1.7.10" ... } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") implementation("io.ktor:ktor-client-core:$ktorVersion") // CIO - for JVM and Android implementation("io.ktor:ktor-client-..
2023.05.03 -
Kotlin value class
요즘 노션에서 모든 기록을 다 하다보니 티스토리에 소홀해졌다 회고도 꾸준히...쓰고있는ㄷ ㅔ 앞으로의 내용들중 블로그에 쓸 만큼 긴 글들은 기록을 옮겨두려고 한다 그 시작은 value class..! wrapper class(가독성을 높이기 위한 class)의 비용을 줄여보고자 나온 class 아래와 같이 사용하면 된다 @JvmInline value class Color private constructor(val rgb: Int) { companion object { fun rgb(rgb: Int) = Color(rgb) } } value 키워드를 통해 value class를 정의할 수 있다 이렇게 정의된 value class는 컴파일러에 의해 최적화의 대상이 된다 @JvmInline Annotation..
2023.02.16