我有以下特點:循環引用時試圖隱藏REPR
sealed trait CommandLike[T, Repr <: CommandLike[T,_]] extends CanBeEnabled[Repr]{
def name: String
def execute: T => Any
}
trait CanBeEnabled[Repr] {
def enabled: Boolean
def isEnabled = enabled
def isDisabled = enabled
def disable : Repr = setEnabled(enabled = false)
def enable : Repr = setEnabled(enabled = true)
def setEnabled(enabled: Boolean) : Repr
}
現在我希望有命令的列表:
val cmds = List[CommandLike[Unit, _]]()
這是煩人,所以我寧願隱藏REPR類型參數:
val cmds = List[Command[Unit]]()
所以我需要命令特質隱藏REPR:
trait Command[T] extends CommandLike[T, _ <: Command[T]]
但是這給了我:
涉及性狀命令特質命令非法循環參考[T] 延伸CommandLike [T,_ <:命令[T]
任何想法? ^
Reuben,你能給我們一個具體的Command實例編譯的例子,即類X擴展Command [Unit] {...}。另外我應該可以這樣做:var x = new X; x = x.disable。你能否在你發佈之前檢查它是否編譯好,請。 – piotrga