当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《当我切换for循环发电机命令时,返回类型不同》经验,为你挑选了1个好方法。

我对"不耐烦的Scala"一书中的这些内容有疑问,我证实了这一点:

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')

第一个产生a String,第二个产生a Vector?但我希望它们能够返回相同的值.



1> Sascha Kolbe..:

一般来说,理解中的第一个集合决定了它的返回类型yield.

因为:

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

与等效map,并flatMap为您的代码如下:

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

要么

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

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有