lambda变量与功能参考



将lambda存储在变量中与使用函数参考的重复使用之间有什么区别?

例如,一个简单的过滤器:

val strings = listOf("One", null, "Three")
val noNulls: (String?) -> Boolean = { value -> value != null }
strings.filter(noNulls)

vs

fun noNulls(value: String?): Boolean = value != null
strings.filter(::noNulls)

在这两种情况下,这都将为JVM编译为专用类,该类实现您传递给filter的对象的行为。

如果您的意图是在声明的范围内调用嵌套函数声明;如果您的目的是获取功能对象,则使用该功能专门为此表示:lambda表达式。

相关内容

  • 没有找到相关文章

最新更新