如何解决swift语言中的结构与类
这是一个带有class
. 请注意,更改名称时如何更新两个变量引用的实例。Bob
is Now Sue
,Bob
曾经被引用的任何地方。
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"
现在struct
我们看到值被复制了,每个变量都保留了自己的一组值。当我们将名称设置为 时Sue
,Bob
结构体aStruct
不会改变。
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"
因此,对于表示一个有状态的复杂实体,aclass
很棒。但是对于只是测量值或相关数据位的值,astruct
更有意义,因此您可以轻松地复制它们并使用它们进行计算或修改值而不必担心副作用。
解决方法
摘自 Apple 书籍“结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的。”
谁能帮我理解这意味着什么?对我来说,类和结构似乎是一样的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。