【问题标题】:What are the main differences between classes and structs in swift 3? [duplicate]swift 3中类和结构之间的主要区别是什么? [复制]
【发布时间】:2017-09-26 07:41:47
【问题描述】:

我发现的唯一一件事是结构不能继承,但类可以,并且结构是按值传递而类是通过引用传递的,但我不明白那到底是什么。 谁能解释一下或者举个例子?

【问题讨论】:

  • 主要:类是引用类型,结构是值类型

标签: swift class struct


【解决方案1】:
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 都指向同一个引用,因此如果一个更改另一个更改,因为引用正在更改,而在 CarCCarD 中,它们是结构的副本各有各的价值。

【讨论】:

    【解决方案2】:

    根据非常流行的 WWDC 2015 演讲“Swift 中的面向协议编程”video,Swift 提供了许多特性,使结构在许多情况下都优于类。

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

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

    【讨论】:

      猜你喜欢
      • 2020-08-15
      • 2011-05-20
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多