【发布时间】:2021-01-03 16:29:28
【问题描述】:
已经讨论了扩大联合类型here,但我似乎无法找到以下案例的答案
让我们从以下内容开始
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 而在另一种情况下被推断为联合类型?
如果这只是一个设计决策,是否有任何需要注意的情况?
【问题讨论】:
标签: scala type-inference union-types dotty scala-3