微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – kotlin lambda表达式作为可选参数

如何将lambda表达式作为Kotlin语言中的可选参数传递
val max = { a: Int,b: Int ->
  if (a > b)
      a
  else
      b
}

我必须传递上面的东西就像可选参数

解决方法

下面定义了一个接受函数函数,如果没有提供函数,则指定传递函数认值.
fun foobar(fn: (a: Int,b: Int) -> Int = { a: Int,b: Int -> if (a > b) a else b }) {
  println(fn(42,99))
}

您可以传递自己的功能

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)

您可以省略该功能并使用认值:

foobar()

或者,您可以将标准库maxOf函数作为认值,而不是编写自己的函数

fun foobar(fn: (a: Int,b: Int) -> Int = ::maxOf) {
  println(fn(42,99))
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐