将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表达式。