람다식은 우리가 마치 value처럼 다룰 수 있는 익명 함수이다.
1) 메소드의 파라미터로 넘겨줄 수 있다.
2) return 값으로 사용할 수 있다.
val lamdaName : Type = {argumentList -> codeBody}
//기본 형식
val square : (Int) -> (Int) = {number -> number*number}
//자료형 선언
val square = {number : Int -> number*number}
//에러
val square = {number -> number*number}
fun main() {
println(square(12))
}
코틀린은 자동으로 자료형 추론이 가능하나, 한 쪽에는 무조건 써줘야 한다.
val namgeAge = {name : String, age:Int ->
"my name ${name} I'm ${age}"}
fun main() {
println(namgeAge("gyoung",21))
}
람다는 무조건 맨 마지막 줄이 return된다.
//람다의 return
val calcul : (Int) -> String = {
when(it){
in 0..40 -> "fail"
in 41..70 -> "pass"
in 71..100 -> "perfect"
else -> "Error!"
}
}
여기서 else가 없다면 에러가 난다. 위에 람다식은 무조건 String을 반환해야 하기 때문에 0~100사이 값이 아닌 값을 넣게 되면 else문을 실행해 String을 반환해야 한다.
fun a(lamda : (Double) -> Boolean) : Boolean {
return lamda(5.2343)
}
fun main() {
val lamda = {number : Double ->
number == 4.123123
}
println(a(lamda))
println(a({it>3.22})) // a {it>3.22}
}