这里有一个类的例子。请注意,当名称更改时,两个变量引用的实例都会更新。鲍勃现在是苏,无论在哪里,鲍勃都曾参考过。
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"
因此,为了表示有状态的复杂实体,类是真棒。但对于仅仅是一个测量或相关数据的位的值,结构更有意义,因此您可以轻松地复制它们并使用它们计算或修改值,而不必担心副作用。
原文地址:https://www.jb51.cc/swift/321660.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。