Расширение типов союзов обсуждалось здесь, но мне кажется, что найти ответ на следующий случай
Начнем со следующего
val x = List(1, 2, "a")
Этот разнородный список выводится как List[Any]
Так же, как в Scala 2.
Однако следующее
val x2 = List(List(1, 2), Vector("a", "b"))
выводится как List[scala.collection.immutable.AbstractSeq[Int | String]]
Это довольно запутанное поведение. Почему LUB двух непересекающихся типов в одном случае выводится как Any
, а в другом - как тип объединения?
Если это просто дизайнерское решение, есть ли такие случаи, о которых следует знать?