Swift —参考类型与值类型
在Swift上,请参阅Apple文档的ClassesAndStructures:类将称为“引用类型”,而Struct将是“值类型”:
– 类是引用类型:与值类型不同,将引用类型分配给变量或常量或将它们传递给函数时, 不会复制引用类型 。 而不是副本,而是使用对相同现有实例的引用。
– 结构和枚举是值类型: 值类型是一种类型,其值在分配给变量或常量或传递给函数时将被复制 。
因此,让我们尝试下面的示例来了解什么是引用类型,值类型:
class HumanClass {
var name: String
init(name: String) {
self.name = name }
}
var classyHuman = HumanClass(name: "Bob")
classyHuman.name // "Bob"
var newClassyHuman = classyHuman // Created a "copied" object
new ClassyHuman.name = "Bobby"
classyHuman.name // "Bobby"
当我将newClassHuman的name属性更改为“ Bobby”时,原始对象的name属性,classyHuman也更改为“ Bobby”。
那么Struct怎么样,让我们看下面的例子:
struct HumanStruct {
var name: String
}
var humanStruct = HumanStruct(name: "Bob" )
var newHumanStruct = humanStruct // Copy and paste
newHumanStruct.name = "Bobby"
humanStruct.name // "Bob"
如上面的示例,我对Class示例做了同样的事情,但是得到了不同的结果。
因此,在类中,当您复制变量时,两个变量都指向内存中的同一位置。 对一个变量的更改将更改另一个变量,称为引用类型。 在Struct中,当您复制和粘贴变量时,它将在内存中创建一个新位置,因此当您更改一个位置时,另一个位置将不会更改,即值类型。