pau*_*ies 0 inheritance scala traits
在Scala中,我正在尝试生成一组通用的检查来运行某些数据.
我的基本特征看起来像这样:
trait Check[T]
{
def complete() : Boolean = ...
def passed() : Boolean = ...
def update[T]( data : T ) : Unit
}
Run Code Online (Sandbox Code Playgroud)
然后我有两个子特征,看起来有点像这样:
trait CheckFoo extends Check[Foo]{ val baz = 1 }
trait CheckBar extends Check[Bar]{ val baz = 2 }
Run Code Online (Sandbox Code Playgroud)
这是为了避免我在每个Foo和Bar检查中定义baz.
然后我有一些实际的Foo检查,例如
class CheckFooOne extends CheckFoo
{
def update( data : Foo ) : Unit = ...
}
Run Code Online (Sandbox Code Playgroud)
但是这不会编译:它告诉我CheckFooOne必须是抽象的,因为没有定义方法更新.
我做错了什么?我确信我错过了一些微妙之处.我很抱歉,如果还有这样的问题,但是我想不出要搜索的内容,而且我已经毫无欢乐地查看了类似问题的列表.
您的update方法的参数化类型T恰好与您的类的类型参数具有相同的名称.
你的特质Check等同于:
trait Check[T]
{
def complete() : Boolean = ...
def passed() : Boolean = ...
def update[U]( data : U ) : Unit
}
Run Code Online (Sandbox Code Playgroud)
你可能想要这个:
trait Check[T]
{
def complete() : Boolean = ...
def passed() : Boolean = ...
def update( data : T ) : Unit
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |