0
私は、1つの抽象メソッドといくつかの具体的なメソッドを持つの特性を定義しました。その多くはいくつかの変更を加えた新しいオブジェクトインスタンスを作成します。私は今、それぞれの具体的なメソッドの戻り値の型を変更することなく、Super[A]
から継承するいくつかのクラスを構築したいと思いますScalaタイプのシグネチャをサブクラスに拡張するには?
trait Super[A] { self =>
def abstractMethod: A
def map[B](f: A => B): Super[B] = new Super[B] {
def abstractMethod = f(self.get)
}
}
:これは一例です。
このような結果を得るために最も慣れ親しんだ方法は何ですか?
を期待通りにしたい場合は、私はカップルのクラス
作品
代わりに.MAPにを.abstractMethodを使用しそのように定義されていませんでしたいくつかの具体的な型 'A'の実装では、いくつかのジェネリックの実装が必要な場合、' class Impl extends Super [String] 'を実行できます'A'をタイプすると、' class Impl [A] extends String [A] 'を行うことができます。私はあなたが取り組んでいる作業の全てを知らないが、代わりにタイプメガネを考えるかもしれない。 –
なぜあなたは戻り値の型を変更したいのですか?各具体的なメソッドの戻り値の型を変更する必要がある 'Super [A]'から継承したクラスの例を表示できますか? – TeWu
'Super'インスタンスではなく、具象クラスのインスタンスを返すための具体的なメソッドが必要です –