2017-07-22 4 views
1
for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar 

異なっています異なる。出力は

答えて

3

これは、ジェネレータの順序が重要であることを示しています。 (<-はすべて「ジェネレータ」です)

第1ジェネレータは、第2ジェネレータがサイクルを完了した後に進むという点で「低速」です。

第1ジェネレータも出力コレクションタイプをガイドします。 Stringを反復すると、出力要素がまだCharであれば、出力はStringになります。それがRangeを反復する場合、出力はIndexedSeq[]です。 (Scala docsによると、Rangeは "インデックス付きシーケンスの特殊なケースです")

+0

ありがとうございました。今理解した。 – Kannan