我是科特林新手。我总是使用带花括号的地图变换。然后 -
为什么这有效 ->
val x = someList.map(::SomeConstructor)
这不是吗?
val x = someList.map{ ::SomeConstructor }
我在在线教程的任何地方都没有找到带圆括号的地图的用法。
请尽量详细解释一下,或者提供合适的参考文章。
你问的问题已得到解释在这个官方文档中 https://kotlinlang.org/docs/reference/lambdas.html#passing-a-lambda-to-the-last-parameter.
If 并且仅当函数的最后一个参数是 lambda,您可以从调用括号中提取它,将其内联放在函数的右侧。它允许更好的 DSL 语法。
EDIT: 举个例子:
良好的用例之一是上下文编程。想象一下你有一个可关闭的物体。您想要限制其使用,以确保在不再需要时正确关闭它。在 Java 中,你有 try-with-resources:
try (final AutoCloseable myResource = aquireStuff()) {
// use your resource here.
}
Kotlin 提供了use
功能。现在,您可以执行以下任一操作:
acquireStuff().use( { doStuff1(it) ; doStuff2(it) } )
或写:
acquireStuff().use {
doStuff1(it)
doStuff2(it)
}
它看起来像 Java try-w-resource,但可以扩展到您的任何 API。允许您设计为最终用户提供高级构造的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)