Swift вычислил свойства в Swift с переменной экземпляра?
Я пытаюсь создать вычисляемое свойство в Swift, и мне нужна переменная экземпляра, чтобы сохранить состояние свойства.
Это особенно происходит, когда я пытаюсь переопределить свойство в моем суперклассе:
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
var _color = "Red"
override var lightSaberColor : String{
get{
return _color
}
set{
_color = newValue
}
}
}
Я переопределяю хранимое свойство lightSaberColor в Jedi с помощью вычисляемого свойства, потому что это единственный способ, которым компилятор может мне это позволить. Это также заставляет меня создавать геттер и сеттер (что имеет смысл). И вот тогда я сталкиваюсь с неприятностями.
Пока что единственный способ, который я нашел, - определить этот дополнительный и ужасный _color
, Тебе более элегантное решение?
Я пытался определить _color
внутри блока свойств, но он не скомпилируется.
Должен быть лучший способ!
2 ответа
То, как у вас это есть, это единственный способ, которым он может работать прямо сейчас - единственное изменение, которое я хотел бы сделать, это объявить _color
как private
,
В зависимости от ваших потребностей, может быть достаточно иметь сохраненное свойство с willGet
и / или didSet
обработчики.
Почему бы просто не установить его в инициализаторе?
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
override init () {
super.init()
self.lightSaberColor = "Red"
}
}