trait SomeClass {
...
}
trait AnotherClass[+V <: SomeClass] {
...
}
trait SomeAnotherClass[+V <: SomeClass] {
protected def someFunc[W >: V](anotherClass: AnotherClass[W]) = {
...
}
}
я получаю эту ошибку:аргументы типа [W] не соответствуют Черта границ параметров типа
type arguments [W] do not conform to trait AnotherClass's type parameter bounds [+V <: SomeClass]
[error] protected def someFunc[W >: V](anotherClass: AnotherClass[W]) = ...
[error] ^
[error] one error found
Я не получаю ошибку, когда я [W >: V <: SomeClass]
вместо просто [W >: V]
, но в в этом случае он затеняет переменную. Пожалуйста, помогите, как это решить.
UPDATE:
protected def someFunc(anotherClass: AnotherClass[V]) = {
...
}
Я получаю ошибку covariant type V occurs in contravariant position in type
Вы сказали, что прием AnotherClass [V] должен быть прекрасным. но, 'protected def someFunc (anotherClass: AnotherClass [V])' дает ошибку 'ковариантный тип V встречается в контравариантном положении в типе AnotherClass' –
Я исправил свой ответ здесь, чтобы объяснить, почему он работает для' W>: V <: SomeClass' , мой предыдущий комментарий был ошибочным. Почему вы хотите, чтобы он был неограничен сверху, я не знаю. –