2014-10-29 82 views
3
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中的实例分配构造函数参数?Swift中init属性的语法糖?

+0

注意:我刚开始使用Swift – max 2014-10-29 13:55:20

回答

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 

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