swift 3中类和结构之间的主要区别是什么?

时间:2017-04-28 08:48:33

标签: swift class struct

我发现的唯一一件事就是结构不能继承,而是一个类,并且一个结构是通过值传递的,而一个类是通过引用传递的,但我无法理解究竟是什么。 有人可以解释一下还是举个例子?

2 个答案:

答案 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

正如您所看到的,CarACarB都指向相同的引用,因此如果更改了其他更改,因为引用正在更改,而CarC和{{1}它们是结构,它们是彼此的副本,每个都有它的值。

答案 1 :(得分:1)

根据Swift video中非常流行的WWDC 2015谈话协议定向编程,Swift提供了许多功能,使得结构在很多情况下比类更好。

结构不再局限于一组包含某些值的字段。

相反,Swift的结构与类具有完全相同的功能 - 除了继承 - 而是值类型(每次在另一个变量中传递时都会复制,就像Int一样),而类是引用类型,传递通过引用而不是像Objective-C中那样被复制。