当我切换for循环发电机命令时,返回类型不同

时间:2017-01-21 06:52:45

标签: scala

我对书中的这些内容有疑问" Scala for the Impatient",我确认了这一点:

String

第一个产生Vector,第二个产生{{1}}?但我希望它们能够返回相同的值。

1 个答案:

答案 0 :(得分:5)

一般来说,for comprehension中的第一个集合决定了yield的返回类型。

由于:

在scala中,理解是Collection .map.flatMap等的语法糖。所以你开始的系列就是你最终得到的系列。

您的代码与mapflatMap的等效代码为:

"Hello".flatMap(c => (0 to 1).map(i => (c + i).toChar))

(0 to 1).flatMap(i => "Hello".map(c => (c + i).toChar))