Pra*_*hap 11 lambda android expression kotlin
如何将lambda表达式作为Kotlin语言中的可选参数传递
val max = { a: Int, b: Int ->
if (a > b)
a
else
b
}
Run Code Online (Sandbox Code Playgroud)
我必须传递上面的东西就像可选参数
Gre*_*pff 12
下面定义了一个接受函数的函数,如果没有提供函数,则指定传递函数的默认值.
fun foobar(fn: (a: Int, b: Int) -> Int = { a: Int, b: Int -> if (a > b) a else b }) {
println(fn(42, 99))
}
Run Code Online (Sandbox Code Playgroud)
您可以传递自己的功能:
val min = { a: Int, b: Int -> if (a <= b) a else b }
foobar(min)
val max = { a: Int, b: Int -> if (a > b) a else b }
foobar(max)
Run Code Online (Sandbox Code Playgroud)
您可以省略该功能并使用默认值:
foobar()
Run Code Online (Sandbox Code Playgroud)
或者,您可以将标准库maxOf函数称为默认值,而不是编写自己的函数:
fun foobar(fn: (a: Int, b: Int) -> Int = ::maxOf) {
println(fn(42, 99))
}
Run Code Online (Sandbox Code Playgroud)
您可以使用max默认功能
fun someDefault(f: (a: Int, b: Int) -> Int = max) {
f(1, 7)
// do something
}
Run Code Online (Sandbox Code Playgroud)
或者您也可以定义一个以lambda作为参数的方法,该方法是可选的
fun someOptional(f: ((a: Int, b: Int) -> Int)? = null) {
f?.invoke(1, 7)
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下(默认和可选),您都可以为通话指定一个lambda,也可以忽略它
fun call() {
someDefault()
someDefault { a, b -> a * b}
someOptional()
someOptional { a, b -> a * b}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |