我想要完成的是类似的事情:
class Foo( val bar: String = "Hello!" ) extends MyTrait[ Foo ]
trait MyTrait[ T ] { self : T =>
T.bar
}
Run Code Online (Sandbox Code Playgroud)
改变自我:T to self:Foo显然有效,但是MyTrait可能扩展另一个也有bar的类,所以self:Foo是不可接受的.
我可能会犯这个错误,有什么想法吗?
我认为,结构类型是你需要的:
trait MyTrait {
self: { val bar: String } =>
def showBar = bar
}
class Foo(val bar: String) extends MyTrait
Run Code Online (Sandbox Code Playgroud)