在 Coursera 上的 Scala 课程之后,Martin Odersky 展示了一个示例代码:
1 to 5 map ( i => i*i )
他说,因为它们共享相同的接口 ( ),所以将其Range
转换为 a ,并且结果无法表示为 a
(在其示例中更清楚,因为他生成了一对不可表示为 a )。Vector
IndexedSeq
Range
Range
我不确定是否理解,因为我认为他之前说过,在 for 表达式中,第一个生成器将确定将产生的元素类型,而且它似乎并不总是正确的,至少对于Range
.
而且我不确定为什么输出是Vector
,因为Vector
可能不是唯一可以表示上面计算的结果的另一种实现。
有人可以帮我理解这部分吗?