gpt4 book ai didi

scala - 为什么这些看起来相似的语句会产生不同类型的对象?

转载 作者:行者123 更新时间:2023-12-04 14:00:33 26 4
gpt4 key购买 nike

在“不耐烦的 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')

但是,他没有提到为什么在第一种情况下输出是 String,而在第二种情况下输出是 Vector。有人可以解释一下吗?谢谢。

最佳答案

你的第一个例子被翻译成这样的:

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

第二个
(0 to 1).flatMap(i => "Hello".map(c => (c + i).toChar))
StringOps.flatMap返回 String ,因此您的第一个示例返回 String以及。 Range.flatMap返回 IndexedSeq反而。

关于scala - 为什么这些看起来相似的语句会产生不同类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com