【发布时间】:2014-12-28 19:06:58
【问题描述】:
我正在尝试在 Swift 中创建一个计算属性,我需要一个实例变量来保存该属性的状态。
当我试图覆盖我的超类中的一个属性时会特别发生这种情况:
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
var _color = "Red"
override var lightSaberColor : String{
get{
return _color
}
set{
_color = newValue
}
}
}
我正在用计算属性覆盖 Jedi 中存储的属性 lightSaberColor,因为这是编译器允许我使用的唯一方法。它还迫使我创建一个 getter 和 setter(这是有道理的)。那就是我遇到麻烦的时候。
到目前为止,我发现的唯一方法是定义这个额外且丑陋的变量_color。你是一个更优雅的解决方案吗?
我尝试在属性块内定义_color,但它不会编译。
一定有更好的方法!
【问题讨论】:
-
为什么需要覆盖属性?这背后一定有原因,我认为这有助于为您提供正确的答案
-
这只是一个例子。真正的问题是如何处理计算属性中的 iVars
-
为什么要对同一个问题提出 2 个问题?关闭一个。
-
这不是同一个问题。请阅读问题。
标签: inheritance swift properties overriding ivar