Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala for/yield的返回类型_Scala_Scala Collections_For Comprehension - Fatal编程技术网

Scala for/yield的返回类型

Scala for/yield的返回类型,scala,scala-collections,for-comprehension,Scala,Scala Collections,For Comprehension,我正在通读,我遇到了一些让我抓狂的事情 下面返回一个字符串: scala> for ( c<-"Hello"; i <- 0 to 1) yield (c+i).toChar res68: String = HIeflmlmop 或者我完全误解了文本的意思,“……生成的集合与第一个生成器兼容。”对于理解,将其分解为一系列map、flatMap和过滤器操作 当您在范围上使用映射时,您会得到向量输出: scala> 0 to 2 map (x => x * x) re

我正在通读,我遇到了一些让我抓狂的事情

下面返回一个字符串:

scala> for ( c<-"Hello"; i <- 0 to 1) yield (c+i).toChar
res68: String = HIeflmlmop

或者我完全误解了文本的意思,“……生成的集合与第一个生成器兼容。”

对于理解,将其分解为一系列
map
flatMap
过滤器
操作

当您在
范围上使用
映射
时,您会得到
向量
输出:

scala> 0 to 2 map (x => x * x)
res12: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 1, 4)
这是因为
范围
是一种非常简单的集合,基本上只有两个三个数字:起始值、结束值和步长。如果您查看上面映射的结果,您可以看到结果值不能用
范围
类型表示。

在本
中,for(我看一下以更好地了解其工作原理。And(从42:40开始)Martin Odersky自己解释了scala系列的历史、动机和实现。
scala> val range = 0 to 1
range: scala.collection.immutable.Range.Inclusive = Range(0, 1)
scala> 0 to 2 map (x => x * x)
res12: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 1, 4)