2014-10-29 43 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 

如果您在原始類型聲明中聲明瞭任何自己的初始值設定項,但您可以在擴展中添加其他初始值設定項,這些自動生成的初始化項會消失。