lambda
/*
function fn(a,b){
return function(c){
return a * b * c
}
}
*/
// 普通的
val fn: (Int, Int) -> Unit = { a, b ->
println(a + b)
}
// 闭包, 省略返回值声明
fun f(a: Int, b: Int) = { it: Int ->
a * b * it
}
// 闭包, 带声明
val fn2: (Int, Int) -> (Int) -> Int = { a, b ->
{ c ->
a * b * c
}
}
// 闭包, 带挂起
val fn3: (Int, Int) -> suspend (Int) -> Int = { a, b ->
{ c ->
delay(1000)
a * b * c
}
}
// 闭包, 指定return
val fn4: (Int, Int) -> suspend (Int) -> Int = { a, b ->
ret@{ c ->
delay(1000)
return@ret a * b * c
}
}