abstract class A {
protected[this] type ThisType = this.type
protected[this] type OtherType = this.type
def assign(other: OtherType): ThisType
}
class B extends A {
def assign(other: OtherType): ThisType = ???
}
class C extends A {
def assign(other: OtherType): ThisType = ???
}
class D extends C {
def assign(other: OtherType): ThisType = ???
}
Как мне сделать, что другой тип получил в assign
от и объект типа B
также B
. напримерКак я могу убедиться, что функция получает тот же тип параметра, что и текущий объект?
def f1(p1: A, p2: A) = p1.assign(p2)
def f2[T <: A](p1: T, p2: T) = p1.assign(p2)
я получаю следующие ошибки::
NB: На самом деле ThisType
и OtherType
должны быть одинаковыми, но я отделено их, так что я могу попробовать, как я могу что-то эффективно, как писать из разных вариантов.
Вы хотите тип '' p1' и p2' к быть класса реализации? –
Да. Я хочу, чтобы это был один и тот же класс реализации. –
'ThisType' и' OtherType' предназначены для двух разных типов? –