gpt4 book ai didi

Kotlin 范围功能 - 不使用 "it"或 "this"是否有任何副作用?

转载 作者:行者123 更新时间:2023-12-02 13:07:51 25 4
gpt4 key购买 nike

基本上这之间有什么区别:

obj?.let{ doSomethingWith(it) }

还有这个?
obj?.let{ doSomethingWith(obj) }

显然,仅通过阅读 Kotlin 文档就更喜欢第一个,但是我发现了与第二个类似的代码,而且我的 IDE 并没有提示它。是否有任何“陷阱”需要注意,我是否应该始终使用“it”和“this”,即使我没有被迫这样做?

最佳答案

这实际上与作用域函数没有太大关系,而更多地与空安全性有关。

万一obj ( object 不是一个好名字,因为它是 Kotlin 中的关键字) 是一个值,这段代码会产生不必要的智能转换:

val obj: String? = null

obj?.let {
doSomethingWith(obj) // Smart cast to kotlin.String
}

万一 obj是一个变量,这变得更糟,正如评论中正确指出的那样,因为此代码可能不再是线程安全的。

不过,这是安全的:
obj?.let { 
doSomethingWith(it)
}

由于 it是一个值,因此是不可变的。

关于Kotlin 范围功能 - 不使用 "it"或 "this"是否有任何副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58225457/

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