본문 바로가기
학습 log (이론)/kotlin

Kotlin기초 'lambda'

by abbear25 2019. 12. 7.

람다 표현식, 익명함수 표현법

변수에 할당하거나 함수에 전달 가능

{ 파라미터 -> 실행코드블록 }

val 변수 = { x:Int, y:Int -> x+y }

Kotlin에서 함수와 람다는 일급 객체로 취급되어 아래와 같이 사용 가능

val exp = {x:Int, y:Int -> {z: Int->(x+y)*z}}
val exp2 = exp(2,3)
val result = exp2(4)

 

*First Class Citizen, 일급객체

변수와 자료 구조에 할당 가능

함수의 파라미터로 전달 가능

함수의 반환값으로 전달 가능

동등성 비교 가능

 

Collection의 함수형 API

filter

 컬렉션에서 조건에 맞는 항목만 추출해 새로운 컬렉션 반환

map

 컬렉션 항목을 변환하여 새로운 컬렉션을 만들어 반환

flatmap

 컬렉션의 포함된 항목들을 평평하게 펼친 뒤 반환하여 새로운 컬렉션을 반환

find

 함수의 조건을 만족하는 항목 한 개를 반환

group by

 컬렉션을 여러 그룹으로 이뤄진 맵으로 변경

val list = listOf(1, "2", 3, 1.2, 5)
val filterList = list.filter { item->item is String } //특정 타입에 맞는 항목만 가져오기, list.filter { it is String }
val mapList = list.map { "String: ${it}" }            //모든 값에 문자열 붙이기
val find = list.find { it is Integer }                //특정 조건의 값 찾기
val dimenList = listOf(listOf(1, 2), listOf(3,4))     //2차원 배열 만들기

 

확장함수

이미 정의된 클래스를 수정없이 클래스에 포함된 함수처럼 사용

fun 수신객체타입.함수명():반환형{

 return 수신객체this.get(수신객체this.length-1).toString() 

}

fun String.lastString():String{
    return this.get(this.length-1).toString()
}
fun String.funS(){
    this.lastString()
}
fun funS2(){
    "Str".lastString()
 }

 

반응형

'학습 log (이론) > kotlin' 카테고리의 다른 글

'Coroutine' 기본  (0) 2019.12.15
Kotlin기초 'Closure'  (0) 2019.11.12
Kotlin기초 '유용한 함수'  (0) 2019.11.10
Kotlin기초 '함수형 프로그래밍'  (0) 2019.11.06
Kotlin기초 '객체'  (0) 2019.11.03