私は、traitの実装でかなり単純な状況だと思っていますが、私は欠けている単純な解決策がいくつかあると思います。私はそれが呼び出されることに価値具体的な実装の唯一のタイプとしてのパラメータ(およびリターンとして受け入れ特性上のメソッドを持っているしたいと思います。具体的:。Scala traitメソッドは型の実装に限定されています
trait Foo {
type ConcreteFoo // what to put here?
def combine(that:ConcreteFoo):ConcreteFoo
}
class FooImpl1 extends Foo {
def combine(that:FooImpl1):FooImpl1 = {
// implementation
}
}
class FooImpl2 extends Foo {
def combine(that:FooImpl2):FooImpl2 = {
// implementation
}
}
今私が持っています実装するクラスのtype Self = FooImpl
、私はむしろ、可能な場合、それの世話をする特質上の何かを持っていると思います
このソリューションは、f-bounded polymorphismと呼ばれます。ここをクリックしてください:https://twitter.github.io/scala_school/advanced-types.html#fbounded – maasg