我发现的唯一一件事就是结构不能继承,而是一个类,并且一个结构是通过值传递的,而一个类是通过引用传递的,但我无法理解究竟是什么。 有人可以解释一下还是举个例子?
答案 0 :(得分:8)
class Car {
var name: String
init(name:String){
self.name = name
}
}
var carA = Car(name: "BMW")
var carB = carA
//now I will change carB
carB.name = "Nissan"
print(carA.name) //This will print Nissan
struct CarStruct {
var name: String
init(name: String){
self.name = name
}
}
var carC = CarStruct(name: "BMW")
var carD = carC
//now I will change carB
carD.name = "Nissan"
print(carC.name) //This will print BMW
正如您所看到的,CarA
和CarB
都指向相同的引用,因此如果更改了其他更改,因为引用正在更改,而CarC
和{{1}它们是结构,它们是彼此的副本,每个都有它的值。
答案 1 :(得分:1)
根据Swift video中非常流行的WWDC 2015谈话协议定向编程,Swift提供了许多功能,使得结构在很多情况下比类更好。
结构不再局限于一组包含某些值的字段。
相反,Swift的结构与类具有完全相同的功能 - 除了继承 - 而是值类型(每次在另一个变量中传递时都会复制,就像Int一样),而类是引用类型,传递通过引用而不是像Objective-C中那样被复制。