2014-10-29 2 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?Синтаксический сахар для свойств init в Свифт?

+0

Примечание: Я только начинаю с Swift – max

ответ

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 

Эти автоматически сгенерированные инициализаторы исчезают, если вы объявляете какие-либо из ваших собственных инициализаторов в первоначальном объявлении типа, но вы можете добавить другие инициализаторы в расширение.

Смежные вопросы