1
for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar
爲什麼上面的行收率是從下面的線產量不同即使輸出在Yield語句是不同
for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
(c + i).toChar
是相同於上述線而輸出應該是相同的,但它是不同。
for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar
爲什麼上面的行收率是從下面的線產量不同即使輸出在Yield語句是不同
for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
(c + i).toChar
是相同於上述線而輸出應該是相同的,但它是不同。
表明發電機的次序是顯着的。 (每個<-
是一個「發電機」。)
第一個發電機是「較慢」,因爲它只在第二個發電機完成一個週期後才前進。
第一個生成器還指導輸出集合類型。如果迭代通過String
,則輸出爲String
,如果輸出元素仍然是Char
s。如果它迭代通過Range
,那麼輸出是IndexedSeq[]
。 (根據Scala docs,Range
是「索引序列的特例」。)
謝謝。現在明白了。 – Kannan