본문 바로가기

코틀린

코틀린에서 Sequence와 SAM

반응형

코틀린에서 Sequence란?

사용법

val list = listOf("one","two","three")
val sequenceFromList = list.asSequence()
val sequence = sequenceOf("four", "three", "two", "one")

Collections 확장 함수의 경우 각 확장 함수를 호출할 때마다 새로운 Collection이 생성되어 전환된다.

val list = listOf(1, 2, 3) // [1, -2, 3] 생성
val maxOddSquare = list
        .map{ it * it }   // [1, 4, 9] 생성
        .filter { it % 2 == 1 } // [1, 9] 생성
        .max()

총 3개의 intermediate collection이 생성

lazy evaluation

val list = listOf(1, 2, 3) // [1, 2, -3] 생성
val maxOddSquare = list
        .asSequence()
        .map{ it * it } 
        .filter { it % 2 == 1 }
        .max()

chain cells 앞에 asSequence() 확장함수를 붙여주면 된다.

SAM Conversions

Single Abstract Methode의 약자, 하나의 추상 메서드에 대해서 lambdas 식을 제공한다. Java에서 작성한 Interface 정의와 이를 활용하는 setOnClickListener를 Kotlin에서 부르는 경우 이에 해당 됨

반응형

'코틀린' 카테고리의 다른 글

코루틴 1탄  (0) 2020.12.08
Kotlin에서 Unit 과 Nothing  (0) 2020.04.21
Nothing 타입  (0) 2020.03.15
멤버 함수의 중위 표기법 (Infix Notation)  (0) 2020.02.16
in 연산자  (0) 2020.02.16