私は特性を拡張する実際のクラス を返す宣言されたメソッドを持つ密閉型の特性を持ちたいと思います。私は抽象型、パラメータ型、または を使用してこれを解決する他の良い方法がありますか?形質と型を拡張する
sealed trait Foo {
type T
def doit(other: T): T
}
又は
sealed trait Foo[T] {
def doit(other: T): T
}
T
は、この例でFoo
のサブタイプでなければならないことに留意されたいです。私はこのようにそれを行う場合はタイプ 情報があまりにも繰り返し感じている:
case class Bar(name: String) extends Foo[Bar] {
def doit(other: Bar): Bar = ...
}
は聞き覚え。おそらくこれの例を教えてください。 – chrsan
同じタイプの新しいインスタンスを返すとうまくいかないようですか? – chrsan
はい - 'this.type'はパスに依存します:現在のインスタンスを返すためにのみ有効です –