gpt4 book ai didi

Kotlin:使用 map 变换时 {} 和 () 之间的区别?

转载 作者:行者123 更新时间:2023-12-02 00:05:16 26 4
gpt4 key购买 nike

我是 Kotlin 的新手。我总是使用带有花括号的 map 变换。然后——

为什么这样做 ->

val x = someList.map(::SomeConstructor)

这不是吗?

val x = someList.map{ ::SomeConstructor }

我在在线教程的任何地方都没有找到带有圆括号的 map 的用法。

请尽量详细解释,或提供合适的引用文章。

最佳答案

你问的都有解释in this official documentation .

如果且仅当函数的最后一个参数是 lambda,您可以从调用括号中提取它,将其内联放在函数的右侧。它允许更好的 DSL 语法。

编辑:让我们举个例子:

上下文编程是一个很好的用例。假设您有一个可关闭的对象。您希望界定其使用范围,以确保在不再需要时正确关闭它。在 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。允许您设计为最终用户提供高级结构的库。

关于Kotlin:使用 map 变换时 {} 和 () 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com