gpt4 book ai didi

android - Kotlin 中的嵌套 let block

转载 作者:IT老高 更新时间:2023-10-28 13:37:35 25 4
gpt4 key购买 nike

在 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 是内联的(参见: what is inlining ,也是 official docs ),它的成本与自己声明局部变量完全相同。如果您将它与安全调用一起使用,它还会添加一个空检查,您也必须手动执行此操作。

所以使用它基本上没有任何开销,只要你的代码对你来说足够清晰,就可以随意使用它。


例如这样的代码:

webview.settings.let { settings ->
settings.javaScriptEnabled = true
settings.setSupportZoom(false)
}

... 将大致转换为与此 Java 代码等效的字节码:

Settings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(false);

除了 settings 可能会被称为像 var10000 这样的通用名称,但这不是重点。关键是没有创建函数实例,也没有调用 let 函数或类似的东西,因此没有开销。

对于 future 的任何问题,您可以使用 Kotlin plugin's bytecode viewer and decompiler 自行检查。 .

关于android - Kotlin 中的嵌套 let block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48828295/

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