私は次のコードを持っています:
trait CellT[VAL <: AnyVal] {
var value: VAL
type NEXT <: AnyVal
var next: CellT[NEXT]
}
abstract class Cell[VAL <: AnyVal] extends CellT[VAL] {
var next = this // defaults to `this`. ERROR
}
// impl example:
class CellInt extends Cell[Int] {
var value: Int = 0
}
エラーはそれを言います
タイプCell[Cell.this.NEXT]のトレイトCellTの変数nextをオーバーライドします。nextの変数のタイプは互換性がありません
ここでは、と同じthis
タイプになることは明らかですが、それでもエラーが発生します。タイプのすべてを返すことができるはずであるが、このタイプはクラスタイプパラメータと同じように必要ではないはずであるとScalaにどのように伝えることができますか?それ以外の場合は使用できますが、制限が厳しすぎます。たとえば、メソッドがタイプインスタンスのみを返すように制限されます。しかし、他のタイプのインスタンスに再割り当てできるようにしたいと思います。VAL <: AnyVal
NEXT <: AnyVal
next
Cell[A <: AnyVal]
[VAL <: AnyVal]
[VAL]
Cell[Int]
next
Cell[Int]
next
Cell[*]