Вот цитата из документов:
Если у вашего пользовательского типа есть хранимое свойство, которое логически разрешено иметь "нет значения" - возможно, потому что его значение не может быть установлено во время инициализации или потому, что ему разрешено иметь "нет значения" в какой-то более поздней точке - объявить свойство с необязательным типом. Свойства необязательного типа автоматически инициализируются значением nil, что указывает на то, что свойство преднамеренно предназначено для того, чтобы во время инициализации еще не было значения.
Если я делаю это с классом, он отлично работает:
class MyClass {
var someProperty: String?
}
var myClass = MyClass()
myClass.someProperty // Shows nil
Однако, если я делаю это с помощью типа struct, я получаю сообщение об ошибке при инициализации:
struct MyStruct {
var someProperty: String?
}
// ERROR
var myStruct = MyStruct()
Ошибка:
Отсутствует аргумент параметра 'someProperty'
Я могу исправить это, объявив его nil явно следующим образом:
struct MyStruct {
var someProperty: String? = nil
}
// Valid
var myStruct = MyStruct()
Вопрос
Учитывая документацию, я ожидал бы свойств любого типа, которые устанавливаются как необязательные значения по умолчанию равными нулю. Есть ли причина, по которой я должен явно объявить это в структуре?
Почему?
Нет веской причины, как и многие из вас, я просто экспериментирую.