Почему эта функция не компилируется?Intersect Scala с набором подтипов
case class MyType(n: Int)
def intersection(s1: Set[MyType], s2: Set[_ <: MyType]) =
(s1 & s2)
Я получаю следующее сообщение об ошибке:
error: type mismatch; found : Set[_$1] where type _$1 <: MyType required: scala.collection.GenSet[MyType] Note: _$1 <: MyType, but trait GenSet is invariant in type A. You may wish to investigate a wildcard type such as
_ <: MyType
. (SLS 3.2.10) (w & r)
Есть простой способ "продвигать" второй аргумент к типу Set [MyType] без использования asInstanceOf?
Спасибо за ваше объяснение. Тем не менее, теперь я не знаю, почему этот оператор typechecks правильно: Set (new Object()) & Set ("string") – tba
@tba Это очень хорошее наблюдение. Я спросил его здесь: http://stackoverflow.com/questions/18029746/weird-behavior-of-function-in-set. благодаря – Jatin