Script
とScriptType
のクラスを作成しようとしています。 ScriptType
は、特定の抽象タイプのScript
を生成します。 Script
は、それらを作成したScritpType
によってパラメータ化されます。`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]
が、イムは、この例では
Error:(10, 10) overriding type S in trait ScriptType with bounds <: Script[Scala.this.type];
type S has incompatible type
type S = ScalaScript
ScriptType.Scala
でtype S
の割り当てに関して、コンパイル中にエラーを取得がScript[Scala.this.type]
ScalaScript
ではありません。
私の最初の試みは、このように見えましたか?