private(set) let
противоречие в терминах. Любому установщику требуется var
iable.
Имейте в виду, что присвоение значения по умолчанию свойству не устанавливает в качестве свойства с точки зрения инициализации. По этой причине наблюдатель свойства didSet
не вызывается после назначения значения по умолчанию для свойства.
В Swift есть только один случай для использования private(set)
: если класс содержит код, который изменяет переменную
class Foo {
let name : String
private(set) var expiryDate : Date
init(name: String, expiryDate: Date){
self.name = name
self.expiryDate = expiryDate
}
func extendExpiryDate(to newDate : Date) {
expiryDate = newDate
}
}
Если свойство инициализируется только во время init
, это константа - как правильно указано в других ответах - поэтому объявите ее как let
константа. В отличие от других языков программирования Swift предоставляет явные константы с преимуществами большей безопасности, меньшего использования памяти и лучшей производительности.