В структурах функция инициализации по умолчанию выводится на основании свойств структуры.
Таким образом, вы можете либо написать эту функцию инициализации, либо опустить ее:
init(nameFrom: String, numberFrom: Int) { ... }
Преимущество добавленияФункция init - это то, что вы можете выполнять код внутри функции init, если это то, что вы хотели бы сделать.
Кроме того, вы, конечно, можете добавлять пользовательские convenience init
функции.
Обратите внимание, однако, что это не особенность классов.Для этого вам всегда нужно явно написать инициализатор.
Вы можете безопасно сделать:
struct Example {
var name: String
var number: Int
}
... но это:
class Example {
var name: String
var number: Int
}
...will выдаст следующую ошибку:
В классе «Пример» нет инициализаторов
Вместо этого вам придется выполнить:
class Example {
var name: String
var number: Int
init(name: String, number: Int) {
self.name = name
self.number = number
}
}
Однако, если вы предоставите значения по умолчанию для свойств внутри класса, вам не нужно будет писать явный инициализатор:
class Example {
var name: String?
var number: Int = 0
}