코틀린을 사용하면서 함수를 인자로 받는 함수에서 이해가 잘 가지 않는 부분이 있었다.
fold를 예시로 들면
numbers.fold("") { acc, it -> acc + it }
중괄호 안에서 lambda expression을 사용하는 것을 볼 수 있다.
fold 공식 문서를 보면
inline fun <T, R> Iterable<T>.fold(
initial: R,
operation: (acc: R, T) -> R
): R
fold의 두번째 인자는 operation이라는 함수인데 저 중괄호가 어떤 식으로 처리되는지 궁금했다.
이에 대한 답이 Passing trailing lambdas 이거였다.
코틀린에서는 함수의 마지막 인자가 함수이면 중괄호안에 함수를 넣어서 전달할 수 있다.
만약 함수의 인자가 함수 하나라면 소괄호는 완전히 생략될 수 있다.
numbers.map { it + 1 }