Должно ли Either
работать с параметризованными функциями?Scala: Либо с параметризованным типом функции
case class FunOrSeq[T1, T2](e: Either[Function1[T1, T2], Iterable[T1]])
def f: Int => Int = x => x
scala> FunOrSeq(Left(f))
<console>:11: error: type mismatch;
found : scala.util.Left[Int => Int,Nothing]
required: Either[T1 => Int,Iterable[T1]]
FunOrSeq(Left(f))
Что было удивительно для меня - она работает с явными типами:
scala> case class FunOrSeq[T1, T2](e: Either[(Int => Int), Iterable[T1]])
defined class FunOrSeq
scala> FunOrSeq(Left(f))
res6: FunOrSeq[Nothing,Nothing] = FunOrSeq(Left(<function1>))
Не ответ, но ваш первый пример работает, если вы явно передаете параметры типа в 'Left'. 'FunOrSeq (Left [(Int => Int), Iterable [Int]] (f))' Кажется, он не может не понять, что '[Int => Int, Nothing]' удовлетворяет '[T1 => Int, Iterable [T1]] ' – Falmarri