我是斯卡拉的新手,我正在通過Cay Horstmann的斯卡拉爲Impatient工作。它順利,直到我得到了理解,並碰到了這種略帶神祕的通道(2.6,先進的循環和悟):斯卡拉發電機的順序「理解」影響答案
[開始報價]
生成的收集與兼容第一發電機。
for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar
// Yields "HIeflmlmop"
for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
// Yields Vector('H', 'e', 'l', 'l', 'o', 'I', 'f', 'm', 'm', 'p')
[結束報價]
事實上,在REPL運行此,我看到的是,第一代碼段的結果的類型爲字符串,和第二代碼段的類型是scala.collection.immutable。 IndexedSeq [字符]。
爲什麼類型不同?我想我理解第二行代碼,但我不明白爲什麼第一行不具有類型scala.collection.immutable.IndexedSeq [Char]。得到一個字符串而不是一個Vector有什麼魔力?作者認爲「與第一臺發電機兼容」是什麼意思?