Swift中init属性的语法糖?

时间:2014-10-29 13:55:08

标签: swift

class Person {

   var name: String
   var age: Int

   func init(age: Int, name: String, /** ... **/) {
     self.age = age
     self.name = name
     // ... much typing, much boring.
   }
}

我可能有点懒,但明确地输入每个属性感觉很像工作中的人类编译器。是否有任何语法糖用于将构造函数参数分配给Swift中的实例?

1 个答案:

答案 0 :(得分:5)

查看Swift语言书的Default Initializers部分。如果您要使Person成为结构而不是类,它将自动获得成员初始化

struct Person {
    var name: String
    var age: Int
}

let p = Person(name: "Joe", age: 30)

为所有存储属性定义默认值的类或结构将获得默认初始值设定项

class Person {
    var name: String = ""
    var age: Int = 0
}

var p = Person()
p.name = "Joe"
p.age = 30

如果您在原始类型声明中声明了任何自己的初始值设定项,则这些自动生成的初始值设定项会消失,但您可以在扩展名中添加其他初始值设定项。