gpt4 book ai didi

Kotlin:Apply 和 Also 有什么区别

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

apply 和also 有什么区别。据我所知,以下代码做同样的事情:

申请

val person = Person().apply {
name = "Tony Stark"
age = 52
// More such stuff
}

val person = Person().also {
it.name = "Tony Stark"
it.age = 52
// More such stuff
}

有什么区别吗?我应该使用其中一种吗?另外,在某些情况下,一种会起作用而另一种不会?

最佳答案

TL;DR 差异

also 函数采用 lambda,您可以在其中使用 it (隐式名称)或自定义名称。

val person = Person().also {
it.name = "Tony Stark"
}

另一方面,通过 apply,使用了函数文字 with receiver,因此在传入的 lambda 中,您可以直接访问接收者的成员,如您在以下。接收者可以被this引用。

val person = Person().apply {
name = "Tony Stark"
}

还有

声明:

inline fun <T> T.also(block: (T) -> Unit): T (source)

调用指定的功能 block this(接收者)值作为其参数并返回this(接收者)值。

申请

声明:

inline fun <T> T.apply(block: T.() -> Unit): T (source)

调用指定功能 block this值作为接收者并返回this(接收者)值。

什么时候用什么

使用示例在此 thread 中进行了解释。 .

关于Kotlin:Apply 和 Also 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131289/

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