Так что у меня проблемы с тем, что, по моему мнению, довольно простая ситуация в реализации признаков, и я надеюсь, что есть какое-то простое решение, которое мне не хватает. Я хотел бы иметь метод на черта, которая принимает в качестве параметра (и возвращает в качестве значения только тип конкретной реализации, что она вызывается на частности:.Метод метода Scala ограничен внедрением типа
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