fun 함수이름(매개변수){ 함수내용 }
{매개변수 -> 함수내용}
fun main(args: Array<String>){
val result = callByValue(Lamda())
println(result)
}
fun callByValue(b: Boolean): Boolean{
println("callByValue function")
return b
}
val Lamda: () -> Boolean ={
println("lamda function")
true
}
lamda function
callByValue function
true
fun main(args: Array<String>){
val result = callByValue(Lamda) // 람다식 이름으로 호출
println(result)
}
fun callByValue(b: () -> Boolean): Boolean{
println("callByValue function")
return b()
}
val Lamda: () -> Boolean ={
println("lamda function")
true
}
🖥
callByValue function
lamda function
true
- typealias 이용
typealias MyType = (Int) -> Boolean
val myFun: MyType = { it > 10 }
- 매개변수 생략
moreParam { _, b -> "Hello World! $b" } // 첫번째 문자열은 사용하지 않고 생략
val lamdaFun2: (Int) -> Int = {x -> x+10 }
val lamdaFun2: (Int) -> Int = { it + 10 }
withArgs("args1", "args2" , { a,b -> "Hello" $a $b" } )
// 소괄호 바깥으로 분리 가능
withArgs("args1", "args2") { a,b -> "Hello" $a $b" }
// 람다식 함수를 마지막 매개변수로 가짐
fun withArgs (a: String, b: String, out: (String, String) -> String) {
println(out(a,b))
}
({첫번째}, {두번째}) {세번째}
val lamdaNumber1: (User) -> Int = { user: User -> user.age }
val lamdaNumber1: (User) -> Int = { it.age }
val lamdaNumber1: (User) -> Int = User::age