gpt4 book ai didi

kotlin - Kotlin中 'let'关键字的目的是什么

转载 作者:行者123 更新时间:2023-12-02 11:58:41 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Example of when should we use run, let, apply, also and with on Kotlin

(6 个回答)


2年前关闭。




我们可以在有或没有 let 的情况下编写代码如下。

var str = "Hello World"
str.let { println("$it!!") }

或者
var str = "Hello World"
println("$str!!")
let的实际用途是什么?.那是更节省内存还是更具可读性?

最佳答案

let是 Kotlin 的 Scope 之一允许您在对象的上下文中执行代码块的函数。在这种情况下,上下文对象是 str .其中有五个:let , run , with , apply , 和 also .它们的使用范围包括但不限于初始化和映射。
它们都非常相似,但它们在上下文对象的引用方式和返回值方面有所不同。在 let 的情况下上下文对象由 it 引用关键字而不是 this关键词。返回值是从 lambda 代码块返回的任何值。其他范围函数,如 apply将返回上下文对象。
因为let返回 lambda block 计算的任何值,它最适合执行某种映射:

var upperStr = str.let { it.toUpperCase()}
apply是更适合您正在做的事情的功能。
要回答您关于哪个代码更可取的问题,这实际上取决于您使用范围函数的目的。在上述情况下,没有理由使用 let .如果您使用 IntelliJ,它会发出警告说调用 let是多余的。这里的可读性是一个偏好问题,并且可能是首选。 let当您希望使用 safe call 对对象执行空安全操作时,该函数很有用。接线员 ?.执行此操作时, let仅当对象不为空时才会执行代码块。使用 let 的另一个原因是,如果您需要为操作引入新变量,但又希望将它们限制在 let block 的范围内。这适用于所有范围函数,所以我重申 let最适合用于映射操作。
编辑: let功能不应产生额外费用。通常我们希望 lambda/代码块被编译为 Function对象,但 inline 的情况并非如此Kotlin 中的函数,编译器将发出与您给出的第二个代码示例相同的代码。见 documentation了解更多信息。

关于kotlin - Kotlin中 'let'关键字的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606651/

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