我正在为不耐烦的人阅读Scala,我遇到了一些让我摸不着头脑的东西。
以下返回一个字符串:
scala> for ( c<-"Hello"; i <- 0 to 1) yield (c+i).toChar
res68: String = HIeflmlmop
但这会返回一个向量:
scala> for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
res72: scala.collection.immutable.IndexedSeq[Char] = Vector(H, e, l, l, o, I, f, m, m, p)
这两个例子前面的文字是……
“当for循环的主体以yield开头时,然后循环构造一个值的集合,每次迭代一个......这种类型的循环称为for理解。生成的集合与第一个生成器兼容。
如果生成的集合与第一个生成器兼容,那么为什么第二个示例不返回 Range 类型,如下所示:
scala> val range = 0 to 1
range: scala.collection.immutable.Range.Inclusive = Range(0, 1)
还是我完全误解了文本的含义,“......生成的集合与第一个生成器兼容”。