리턴값을 없으면 Kotlin.Unit이 반환됨
코틀린에서 함수는 1급 객체임
함수 리터럴
함수 타입 정의 방법
함수(멤버) 참조
람다 정의
고차함수
함수를 인자로 사용한 함수 호출 시 람다 사용
람다 함수 리턴
람다함수 앞에 이름을 명시해주고, return 구문 뒤에 해당 이름을 명시해줘야함
fun foo() {
listOf(1, 2, 3, 4, 5).forEach lit@{
if (it == 3) return@lit // local return to the caller of the lambda - the forEach loop
print(it)
}
print(" done with explicit label")
}
혹은 람다함수를 인자로 받는 함수명을 붙여도 됨
list.forEach { if (it == 3) { return@forEach }; print(it)}
혹은 람다함수 말고 익명함수를 정의해도 됨 (다만, 이 경우 파라미터 타입을 명시해줘야함)
listOf(1, 2, 3, 4, 5).forEach(fun(value: Int) {
if (value == 3) return
print(value)
})
구조 분해
Closure 지원
함수 연습