본문 바로가기

기타/코틀린5

[Kotlin] Sequence vs Collections 안녕하세요. 이번 포스팅에서는 Sequence와 Collections에 대해 알아보려고 합니다. Sequence는 Iterable로 구현된 Collections에서 사용하는 함수의 기능을 수행 하는 class 입니다. 다만 동작방식에서 Collection과 다른데 이전 포스팅에서 list의 Collection map과 flatMap을 비교하면서 Collection은 해당 api의 연산을 모두 마친 후에 다음 결과를 보여주는걸 알 수 있는데요. Sequence 는 오히려 연산을 하나씩 차례대로 진행하는 순서입니다. 공식 사이트에 있는 코드를 예시로 들어보겠습니다. Collection의 함수는 매 api의 모든 결과를 받고 다음으로 넘기게 되어있습니다. 이 과정을 Eagerly Evaluation 이라고 합.. 2022. 7. 5.
[Kotlin] inline과 reified 안녕하세요. 이번 포스팅에서는 Inline과 reified 키워드에 대해 알아보려고 합니다. inline 키워드는 함수에 붙는 키워드로 많이 볼수가 있는데요. 가령 흔히 쓰이는 Collection 함수에서 forEach 문을 보면 아래처럼 inline을 사용하는 것을 볼 수 있습니다. @kotlin.internal.HidesMembers public inline fun Iterable.forEach(action: (T) -> Unit): Unit { for (element in this) action(element) } inline 이란 뜻을 그대로 해석해보면 line 안에 라는 뜻으로 해석할 수 있는데 이말은 즉 코드를 라인안에 넣는다는 의미로 해석하시면 될 거같습니다. 우리가 고차함수(함수를 para.. 2022. 7. 2.
[Kotlin] map, flatMap 비교 안녕하세요. 이번 포스팅은 Kotlin의 map과 flatMap을 비교해보려고 합니다. 일단 map같은 경우 내부 구현은 아래와 같이 구현되어 있는데 좀 더 보자면 //_Collections.kt public inline fun Iterable.map(transform: (T) -> R): List { return mapTo(ArrayList(collectionSizeOrDefault(10)), transform) } public inline fun Iterable.mapTo(destination: C, transform: (T) -> R): C { for (item in this) destination.add(transform(item)) return destination } //Iterables.kt.. 2022. 6. 21.
코틀린 특징 및 자바와 차이점 정리(작성중) 1. 코틀린은 mutable과 immutable 변수를 var와 val이라는 키워드로 쉽게 설정가능 var는 mutable하고 val은 immutable 이다. 자바로 치면 val은 final과 같다. 2. 코틀린은 객체의 초기화에 대해서 늦은 초기화가 가능하다. 즉 변수가 사용될 시점에서 초기화가 가능하다. var 변수의 경우 lateinit var를 설정하면 반드시 한번은 초기화를 해야한다. 반면 val 변수의 경우 선언과 동시에 초기화하는 코드를 넣어주고 변수가 참조될때 초기화가 된다. val lazyTest: String by lazy { "Test" } lateinit var lateInitTest: String fun main() { println(lazyTest) println(lateIni.. 2021. 10. 4.
코틀린 Sealed Class와 Enum Class 안녕하세요. 이번 포스팅에서는 Sealed Class와 Enum Class의 차이 및 Sealed Class의 사용에 대해 적어보려고 합니다. Enum Class는 열거형이라고도 부르며 각 서브클래스들이 상수화된 클래스들입니다. 즉 각 서브클래스들이 고정적인 형태를 지니게 됩니다. 아래 코드처럼 Animal 이라는 Enum 클래스에 Dog, Cat, Pig라는 서브클래스들이 존재합니다. 그리고 이 클래스들은 name을 가지게 되는데 이는 정적인 형태로 항상 같은 값을 가지게 됩니다. enum class Animal(name: String) { Dod("dog"), Cat("cat"), Pig("pig"); } Enum 클래스를 사용하면 가독성이 좋아지고 명확하게 알고 있는 상수형이 있을 때 사용하기 편합.. 2021. 7. 1.