在声明中或使用 init 初始化 Swift 类变量?

Kha*_*ore 5 class init swift

在 Swift 中,您可以在声明变量时在类中初始化变量:

var name: String = "John"
Run Code Online (Sandbox Code Playgroud)

或者你可以用 init 初始化:

var name: String

init(name: String) {
   self.name = name
}
Run Code Online (Sandbox Code Playgroud)

您使用哪个版本以及何时使用?

Ant*_*nio 4

除非您提供初始值作为初始化程序参数(出于明显的原因,您必须在初始化程序中这样做),否则您可以使用这两种方法中的任何一种。

我的规则是:

  • 如果有多个初始化程序,并且该属性在所有情况下都使用相同的值进行初始化,我更喜欢内联初始化
  • 如果属性是(或应该是)不可变的,我更喜欢内联初始化
  • 如果属性可以在实例生命周期内更改,我更喜欢构造函数初始化

但除了第一个之外,其他两个只是根据个人喜好。