더북(TheBook)

람다의 파라미터 타입

코틀린은 람다의 파라미터 타입을 추론한다. 하지만 코틀린은 이런 경우 컴파일 속도를 높이려고 타입 추론에 최선을 다하지 않는다. 타입을 제대로 추론하는 데 시간이 아주 오래 걸릴 경우 코틀린은 타입 추론을 포기하고 여러분에게 파라미터 타입 지정을 미룬다. 다음을 보면 어떻게 타입을 지정하는지 알 수 있다.

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

타입 지정을 피하고 타입 추론에 더 의존할 수도 있겠지만, 타입을 지정하면 또 다른 장점이 있다. 타입을 지정하면 타입 오류로 컴파일이 이뤄지지 않을 때 여러분이 지정한 타입과 추론한 타입이 다르다는 사실을 컴파일러(또는 IDE)가 알려준다.

 

여러 줄 람다

다음 예제처럼 람다 구현을 여러 줄에 걸쳐 작성할 수도 있다.

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

람다가 반환하는 값은 람다 본문의 맨 마지막 줄에 있는 식의 값이다. return 키워드를 람다 안에서 써도 되지만 생략해도 안전하다.

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