[kotlin] Serialization을 이용하여 JSON를 다루어 보자
Kotlin 2022. 1. 20. 22:03

Kolin에서 Json를 보통 Gson 라이브러리를 사용하여 다룬다. Gson를 사용해도 원만한 처리는 가능하다. Serialization은 Gson에서 지원이 미흡한 NEP문제에 대해 강력하게 제한함으로써 kotlin의 가치관를 그대로 반영한 라이브러리이다. 이글은 kotlin의 serialization에 대하여 설정부터 간단한 사용법을 정리할 예정이다. ◆ Maven 설정 1.6.10 1.3.2 버전 정보를 속성에 명시한다. org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compile compile compile kotlinx-serialization org.jetbrains.kotlin kotlin-maven-serialization ${k..

[Kotlin] foreach 와 map 알고 쓰자
Kotlin 2022. 1. 12. 22:48

Kotlin으로 구현하다보면 foreach와 map은 실제로 같은 기능을 하는 것 같지만 깊게 이해하고 사용하면 상황에 따라 유용하여 사용할 수 있다. 이글에서는 두 문법에 관하여 정리해 보려고 한다. ◆foreach 이 문법은 단순히 모든 Collection 원소에 대하여 한번 순회하면서 처리하는 문법이다. 중간에 중단도 가능하고 결과 값을 만들어 내기도 하고 아닐 수도 있다. 즉 모든 처리가 가능 하다. val list = listOf( Data("John", "Ali"), Data("Naidu", "Tan"), Data("Evgenii", "Dmitry")) list.foreach{ if(it.firstName=="Naidu"){ println("This is Naidu") break } } ◆ma..

[kotlin] Collection & Sequence
Kotlin 2021. 11. 23. 09:44

kotlin standard libary에는 Container type으로 Collection과 Sequence(Sequence) 두가지 타입을 가지고 있다. Collection Collection은 대부분 언어에서 라이브러리로 제공된다. C++에는 STL이 있고 python은 자체적으로 제공한다. 제공하는 방식이 다를뿐 사용법에 있어서는 비슷하다고 할 수 있다. 그럼 kotlin에서 제공되는 collection 함수 set, list, map을 세개를 제공한다.공식 문서 참조 특징을 간단히 정리하면 read only와 mutable 두가지 종류로 나뉜다. val numbers = mutableListOf("one", "two", "three", "four") // read only val wordRep..

[kotlin] 자주 사용하는 문법 정리
Kotlin 2021. 11. 23. 09:43

String 원하는 형식으로 String을 formatting하는 방법(추후 추가 예정) String.format("%.4f",0.998999) String.format("%d",30) Substring을 추출하는 방법 //07:05:45PM time_str = (s.substring(0,2).toInt()+12).toString() + s.substring(2,8) //19:05:45 sort 배열을 정열함 val new = arr.sorted() // var 변수는 sort 를 지원 않함. new.sort() //ok Array 초기값이 0인 N 개 배열 생성 var arr = Array(N) { i->0 } //0은 초기값 for 범위 순환 for(i in 0..10){ //TODO } for (i..

[Kotlin] apply, with, let, also, run 사용
Kotlin 2021. 11. 9. 14:27

언어마다 각자 특색의 lamda 함수가 있다. 이번 글에서는 5개의 lamda 함수가 kotlin에서 어떻게 사용되는지 알아보자 정의 inline fun with(receiver: T, block: T.() -> R): R { return receiver.block() } inline fun T.also(block: (T) -> Unit): T { block(this) return this } inline fun T.apply(block: T.() -> Unit): T { block() return this } inline fun T.let(block: (T) -> R): R { return block(this) } inline fun T.run(block: T.() -> R): R { return bl..