在Scala中我可以这样做:斯卡拉覆盖非抽象DEF与VAR
trait SomeTrait {
protected def foo: String
}
class Wibble extends SomeTrait {
protected var foo = "Hello"
}
但我不能这样做,我为foo
trait SomeTrait {
protected def foo: String = "World"
}
class Wibble extends SomeTrait {
protected var foo = "Hello" //complains about lack of override modifier
override protected var foo = "Hello" //complains "method foo_ overrides nothing"
}
为什么提供一个默认的定义同样的事情我不能这样做吗?
编辑:经过对中阶用户会话邮件列表,我有raised this in trac
对不起 - 我犯了一个错误 - 原来的特质方法也应该受到保护。我不确定我是否同意你在逻辑上无法用'var'覆盖'def'。我所有的'def'都在说我期望有一个名为'foo'的访问器,它返回一个String - 声明一个'var'就是我实现这个 – 2009-09-08 11:15:56
我想我同意你的看法。当我写出答案时,我一直认为压倒一切是一个更严格的概念。我会编辑答案,并提供一个可行的解决方案:)。 – 2009-09-08 11:52:04
这是一个耻辱,没有'覆盖def as var'语法 – 2009-09-08 12:07:06