У меня есть ситуация, когда мне нужно переопределить getter свойства.
Скажем, у нас есть:
public class MyBaseClass {
private var _name: String
public internal(set) var name: String {
get {
return self._name
}
set {
self._name = newValue
}
}
}
Ничего особенного, я думаю.
Теперь, если я попытаюсь переопределить getter в производном классе:
public class MyDerivedClass: MyBaseClass {
public var name: String {
get {
return "Derived - \(super.name)"
}
}
}
Я получаю ошибку компиляции: нельзя переопределить свойство mutable с именем "только для чтения".
Если я попытаюсь добавить установщик и переопределить его:
public class MyDerivedClass: MyBaseClass {
public internal(set) var name: String {
get {
return "Derived - \(super.name)"
}
set {
super.name = newValue
}
}
}
Я получаю сообщение об ошибке: Setter overriding var должен быть таким же доступным, как и объявляемое им переопределение.
И если я попробую следующее:
public class MyDerivedClass: MyBaseClass {
public internal(set) var name: String {
get {
return "Derived - \(super.name)"
}
}
}
Затем компилятор сбой...
Как я могу добиться переопределения только получателя?