Swift Var设置为struct在修改时真的被替换了吗?

Swift Var设置为struct在修改时真的被替换了吗?,swift,swift-structs,Swift,Swift Structs,节日快乐 我在Neuberg的《iOS 10编程基础》第147页遇到了麻烦。他的主张是“当你显然改变了一个值类型的实例时,你实际上是在用一个不同的实例替换那个实例。” 问题:如果这是真的,为什么我看不到一个新实例正在初始化 ///////////////////// Slight modification from page 147 in Neuberg, 2016 edition struct Digit { var number : Int init(_ n:Int) {

节日快乐

我在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


但我再也看不到,“号码已设置…”

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

从概念上讲,这意味着您正在复制数据、修改(或变异)数据(如修改
编号
),并用修改后的数据替换原始数据


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

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

从概念上讲,这意味着您正在复制数据、修改(或变异)数据(如修改
编号
),并用修改后的数据替换原始数据


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

谢谢,这很有意义。我想我只是被“一个不同的实例”这句话误导了,对我来说,这至少意味着一个单独的实例经历了实例化过程。@JackyChan:Right-o!谢谢,那是有道理的。我想我只是被“一个不同的实例”这句话误导了,对我来说,这至少意味着一个单独的实例经历了实例化过程。@JackyChan:Right-o!