1
我試圖創建Script
和ScriptType
類。 ScriptType
s將產生特定抽象類型的Script
。 Script
s將由創建它們的ScritpType
參數化。scala抽象類型參數化`this.type`
我第一次嘗試是這樣的:
trait Script[Type <: ScriptType]
sealed trait ScriptType {
type S <: Script[this.type]
}
object ScriptType {
class Scala extends ScriptType {
type S = ScalaScript
}
}
import ScriptType._
case class ScalaScript(source: String) extends Script[Scala]
但即時得到一個錯誤的編譯關於type S
在ScriptType.Scala
Error:(10, 10) overriding type S in trait ScriptType with bounds <: Script[Scala.this.type];
type S has incompatible type
type S = ScalaScript
在這個例子中,分配是ScalaScript
不是Script[Scala.this.type]
?