我正在閱讀通過Scala for the Impatient,我遇到了一些讓我撓頭的東西。斯卡拉返回類型/收益
下返回一個字符串:
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開始,然後循環 構造一個值的集合,每個迭代一個...這種類型的lo op被稱爲理解。生成的集合與第一個生成器兼容。
如果生成的收集與第一發電機兼容,那麼爲什麼不是第二個例子返回一個類型的範圍,如下列:
scala> val range = 0 to 1
range: scala.collection.immutable.Range.Inclusive = Range(0, 1)
還是我完全什麼誤解文本意味着,「...生成的集合與第一個生成器兼容」。
看看[這種優越的答案](http://stackoverflow.com/a/1716558/406435)得到它是如何工作的更好的視野。和[這裏](http://www.devoxx。com/display/FR13/Martin + Odersky)(從42:40開始)Martin Odersky自己解釋了scala系列的歷史,動機和實現。 – senia 2013-05-11 16:32:08