gpt4 book ai didi

kotlin - 个人 Kotlin 之谜:为什么它和b具有不同的值(value)?

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

我是Kotlin的新手,我尝试理解所示的交换两个变量值的简短代码。
我不明白为什么它和b在Also函数中具有不同的值。他们不使用十进制值2引用相同的内存地址吗?

谢谢。

var a = 1
var b = 2
println("a=$a b=$b") // a=1 b=2
a = b.also {
b = a
println("it=$it b=$b") // it=2 b=1. Returns it
}
print("a=$a b=$b") // a=2 b=1

最佳答案

it变量不是b的别名,它是一个单独的变量,具有在执行lambda之前传递给它的b值。您可以将其视为Kotlin像这样隐式创建it变量

a = b.also {
val it = b // implicit
b = a
println("it=$it b=$b") // it=2 b=1. Returns it
}

这不是实际发生的情况,但是如果您这样看,可能会帮助您理解为什么重新分配 b不会影响 it的值。

关于kotlin - 个人 Kotlin 之谜:为什么它和b具有不同的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57958735/

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