gpt4 book ai didi

swift - var set to struct 修改时真的被替换了吗?

转载 作者:行者123 更新时间:2023-11-28 08:20:54 27 4
gpt4 key购买 nike

节日快乐!

我在 Neuberg 的“iOS 10 编程基础知识”的第 147 页上遇到了困难。他的主张是“当你显然改变了一个值类型的实例时,你实际上是在用一个不同的实例替换那个实例。”

问题:如果这是真的那么为什么我看不到正在初始化的新实例?

///////////////////// Slight modification from page 147 in Neuberg, 2016 edition
struct Digit {
var number : Int
init(_ n:Int) {
self.number = n
print("number was set in the initializer to: \(n)")
}
}
var d : Digit = Digit(123) {
didSet {
print("didSet detected old: \(oldValue.number) to new: \(d.number)")
}
}
d.number = 42
d.number = 56

打印--
数字在初始化程序中设置为:123
检测到的 didSet 变化从:123 到 42
检测到 didSet 的变化从:42 到 56

但是我再也看不到了,“number was set...”

最佳答案

替换并不意味着再次调用init

它在概念上意味着您正在复制数据、修改(或变异)数据(如修改 number),并用修改后的数据替换原始数据。

我没有读过这本书,但我相信提出这一点是为了明确区分引用类型和值类型。值类型通过复制传递,引用类型通过引用传递(即使用指针)。

关于swift - var set to struct 修改时真的被替换了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41327857/

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