Kotlin In Action
람다 식 lambda expression
또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다.
기본적으로 코틀린의 함수는 일급 함수(first-class)입니다.
간단히 일급 함수라는 것은 함수를 변수나 자료구조로 담아낼 수 있고, 파라미터로 다른 함수로 전달하거나 함수를 리턴 가능한 것입니다.
-> 고차함수란 다른 함수를 인자로 받거나 결과값으로 반환하는 함수로 일급함수의 특징을 이용한다.
람다란?
람다란 쉽게말하면 익명함수로 함수의 이름이 없는 함수
람다를 사용함으로서 표현이 간결해지고 가독성이 좋아진다.
동일한 입력 인자에 대해 항상 같은 결과값을 반환하는 함수
다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
일급 객체 예제
val oneParam = { n: Int -> n + 2 }
val returnObjectVal = oneParam(1)
val returnObjectFunc = { oneParam(1) }
Kotlin Lambda Expression, 코틀린 람다 표현식 (velog.io)
-> 고차함수가 되려면 일급객체여야한다.
val lambda = {x:Int, y:Int -> x+y}
위 함수는 현재는 반환 타입을 생략하고 파라미터로 Int타입 x,y를 받고 x+y를 반환하는 함수입니다.
val lambda:(Int,Int)->(Int) = {x:Int,y:Int->(x+y)}
위 표현이 반환 타입까지 나타낸 완전한 상태입니다.
val lambda: {x,y -> x + y}
이 표현은 타입 추론 불가로 에러가 발생합니다!
val nestedLambda: ()->()->Unit = { { println("nested") } }
람다식 안에 람다식이 있는 경우