개발/Kotlin(17)
-
__**Using String Resources in a ViewModel**__
모든 개발자들의 숙명 지속가능한…코드.. class MainViewModel (application: Application) : AndroidViewModel(application) { fun getString () : String? { return getApplication().resources.getString(R.string.sample_string) } }다음과 같은 방식에는 문제가 있다. 뷰모델은 주로 상태와 동작을 관리하지만 String등의 리소스는 view 계층에 속하기때문 → 관심사 분리가 제대로 안 됨단위 테스트 어려움 → context를 사용하므로.. 뷰모델의 단위 테스트가 어려워짐이전 데이터를 표시할 가능성 → 뷰모델은 한 번만 생성되기때문에, string 값 등이 변경되면 이전 데이..
2023.08.08 -
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-cio..
2023.07.26 -
Kotlin Unpacking params
현재 대부분의 옵저버에서 데이터를 아래와 같은 형식으로 받아오고있다. //class data class Person(val name:String,val age:Int) //instantiate val person = Person("ch8n", 25) //access val name = person.name val age = person.age 그러나 아래와 같은 형식으로 간략화가 가능해보인다.. //class data class Person(val name:String,val age:Int) //instantiate val developer = Person("Ch8n", 25) //access val (name,age) = developer etc//Data Class Destructuring val p..
2023.07.26 -
Kotlin <in, out, where>
in 키워드 들어오는 타입을 제한하는 genericinterface Consumer { fun consume(item: T) } class StringConsumer : Consumer { override fun consume(item: String) { println("Consuming string: $item") } } class AnyConsumer : Consumer { override fun consume(item: Any) { println("Consuming any type: $item") } } fun main() { val stringConsumer = StringConsumer() stringConsumer.consume("Hello") // prints "Consuming string..
2023.07.26 -
RxKotlin
Reactive Programming데이터의 흐름의 개념과 데이터의 변화를 강조하는 programming RxKotlinKotlin 용 Rx. 아래는 rxkotlin의 세 가지 구성요소.Observable : 데이터 또는 이벤트의 스트림. 관찰자가 사용할 항목 방출Observer : 위의 Observable이 내보낸 항목을 수신하고 처리함. 관찰자는 onNext, onError, onComplete와 같은 이벤트에 반응할 수 있음.Operator : 관찰 가능한 항목을 변환, 필터링, 결합하는데 사용할 수 있는 함수 설정 방법dependencies { implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' implementation 'io.reactivex.rxja..
2023.07.26 -
Kotlin operator extension
Spread 연산자 (*)배열리나 리스트를 spread하는데 사용됨. fun printNumbers ( vararg numbers: Int ) { for (number in numbers) { println(number) } } fun main () { val numbers = intArrayOf( 1 , 2 , 3 ) printNumbers(*numbers) } // 출력 /* 1 2 3 */ in 연산자컬렉션 또는 범위에 요소가 있는지 확인하는데 사용됨. 있으면 TRUE 아니면 FALSE val numbers = listOf( 1 , 2 , 3 , 4 , 5 ) val result = 7 in numbers println( "result is $result " ) // 출력 // false 범위 연산..
2023.07.25