Ответ
Да. Swift автоматически генерирует memberwise initializer для структур, если вы не определяете собственные инициализаторы. Этот инициализатор принимает значения для всех хранимых свойств структуры.
Пример memberwise initializer:
struct Person {
var name: String
var age: Int
var isEmployed: Bool = false // Свойство со значением по умолчанию
}
// Использование сгенерированного инициализатора
let alice = Person(name: "Alice", age: 30) // isEmployed будет false
let bob = Person(name: "Bob", age: 25, isEmployed: true)
Важные детали:
- Инициализатор генерируется только если нет пользовательских инициализаторов.
- Свойства со значениями по умолчанию становятся необязательными параметрами.
- Вы можете определить собственные инициализаторы, но тогда memberwise initializer будет доступен только если вы реализуете его в extension.
struct CustomPerson {
var name: String
var age: Int
// Пользовательский инициализатор
init(fullName: String) {
self.name = fullName
self.age = 0
}
}
// let p = CustomPerson(name: "Test", age: 1) // Ошибка: memberwise initializer недоступен