【发布时间】:2023-03-15 22:40:01
【问题描述】:
在 Kotlin 中使用多个嵌套的 let 是一种好习惯,还是应该引入一个局部变量?有开销吗?
webView?.let { webview ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webview.setLayerType(View.LAYER_TYPE_HARDWARE, null)
} else {
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
}
webview.webViewClient = WebViewClient()
webview.settings.let { settings ->
settings.javaScriptEnabled = true
settings.setSupportZoom(false)
settings.builtInZoomControls = false
settings.displayZoomControls = false
settings.loadsImagesAutomatically = true
}
}
【问题讨论】:
-
提示:你可以使用
let而不使用->,通过it引用对象 -
@pwolaq 但是因为它们是嵌套的,所以您必须非常小心,因为您可能会不小心引用错误的“它”。如果您要嵌套 let、run、apply、with、also,请确保明确命名事物(如 Sparrow318 所做的那样)。
-
@Mikezx6r 我不同意您的观点,只有当外部对象具有您想在内部对象上使用的相同方法/属性时才会出现问题 - 在其他情况下,IDE 会提示您出了点问题:)
-
@pwolaq。我说得太强烈了,但我认为我们同意在任何地方都依赖“它”是有风险的。如果两者都存在属性并且您打算引用外部而不是内部,则不会收到警告。如果您知道没有重叠,那就去做吧,但要注意风险。
-
我习惯于命名值,出于同样的原因,您没有将变量声明为“temp1”。尤其是使用嵌套,可以更轻松地重新访问旧代码。