더북(TheBook)

2.7.5 람다 사용하기

자바와 마찬가지로 람다익명 함수(anonymous function)다. 익명 함수라는 말은 함수를 가리키는 이름이 없이 구현만 있다는 뜻이다. 코틀린 람다 구문은 자바 구문과 약간 다르다. 코틀린에서는 다음 예제처럼 중괄호 사이에 람다가 위치한다.

fun triple(list: List<Int>): List<Int> = list.map({ a -> a * 3 })

함수의 마지막 인자로 람다를 넘길 때는 괄호 밖에 람다를 넣어도 된다.

fun triple(list: List<Int>): List<Int> = list.map { a -> a * 3 }

fun product(list: List<Int>): Int = list.fold(1) { a, b -> a * b }

map 코드에서 람다는 마지막 인자일 뿐 아니라 유일한 인자이기도 하다. 따라서 괄호를 완전히 없앨 수 있다. 두 번째 코드를 보면 람다의 파라미터 주변에는 괄호를 치지 않는다는 사실을 알 수 있다. 실제로, 여기에 괄호를 치면 뜻이 완전히 달라지므로 괄호를 치면 안 된다. 다음 코드는 컴파일되지 않는다.

fun List<Int>.product(): Int = this.fold(1) {(a, b) -> a * b}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.