Yield语句中的输出是不同的

时间:2017-07-22 00:57:11

标签: scala

for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar

为什么上述产量与下面的产量不同

for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar

尽管(c + i).toChar对于上面的行是相同的,但输出应该相同但不同。

1 个答案:

答案 0 :(得分:3)

证明了发电机的顺序很重要。 (每个<-都是&#34;生成器&#34;。)

第一台发电机的速度慢了#34;因为它只在第二个发电机完成一个循环后才会前进。

第一个生成器还指导输出集合类型。如果它迭代String,则输出为String,如果输出元素仍为Char s。如果它遍历Range,则输出为IndexedSeq[]。 (根据Scala docsRange是&#34;索引序列的特例。&#34;)