더북(TheBook)

튜플을 파라미터로 받는 함수도 별다르지 않다. 다음은 두 정수의 합을 계산하는 함수다.

val add: (Int, Int) -> Int = { x, y -> x + y }

함수 타입에서 인자는 괄호 안에 들어 있다. 반면 람다 식에서 파라미터 주변에는 괄호를 쓸 수 없다.

파라미터가 튜플이 아니라면(더 정확히 말해 파라미터가 원소가 1개뿐인 튜플인 경우), it이라는 특별한 이름을 사용해 그 파라미터를 가리킬 수 있다.

val double: (Int) -> Int = { it * 2 }

it을 사용하면 더 간결하게 람다 식을 쓸 수 있지만, 때로 코드 읽기가 더 어려워질 수 있다. 특히 여러 함수 구현의 내포 깊이가 깊어지면 더 그렇다.

Note≡

이 예제에서 double은 함수 이름이 아니다. (람다로 정의한) 함수에는 이름이 없다. 여기서는 일반적인 데이터를 나중에 조작하기 위해 같은 타입의 참조에 대입하는 것처럼 이름이 없는 함수를 그 함수와 일치하는 타입의 참조에 대입한다.

val number: Int = 5

 

라고 쓸 때, 이는 5의 이름이 number이라고 쓴 것은 아니다. 함수에서도 마찬가지다.

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