结构与类在swift语言

从苹果书
“结构和类之间最重要的区别之一是当结构在代码中传递时总是被复制,但类通过引用传递。

任何人都可以让我明白这是什么意思,对我来说类和结构似乎是一样的。

这里有一个类的例子。请注意,当名称更改时,两个变量引用的实例都会更新。鲍勃现在是苏,无论在哪里,鲍勃都曾参考过。
class SomeClass {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var aClass = SomeClass(name: "Bob")
var bClass = aClass // aClass and bClass Now reference the same instance!
bClass.name = "Sue"

println(aClass.name) // "Sue"
println(bClass.name) // "Sue"

现在有了一个结构,我们看到的值是复制的,每个变量保持自己的一组值。当我们将名称设置为Sue时,aStruct中的Bob结构不会改变。

struct SomeStruct {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var aStruct = SomeStruct(name: "Bob")
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.name = "Sue"

println(aStruct.name) // "Bob"
println(bStruct.name) // "Sue"

因此,为了表示有状态的复杂实体,类是真棒。但对于仅仅是一个测量或相关数据的位的值,结构更有意义,因此您可以轻松地复制它们并使用它们计算或修改值,而不必担心副作用。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...