Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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 无法映射文件流_Scala - Fatal编程技术网

Scala 无法映射文件流

Scala 无法映射文件流,scala,Scala,我试图映射文件流,但仅计算第一个元素: var fList = Stream(new java.io.File("test1") , new java.io.File("test2")) //> fList : scala.collection.immutable.Stream[java.io.File] = Stream(test1, ?)

我试图映射文件流,但仅计算第一个元素:

 var fList = Stream(new java.io.File("test1") , new java.io.File("test2"))
                                                  //> fList  : scala.collection.immutable.Stream[java.io.File] = Stream(test1, ?)
                                                  //| 

 fList.map(file => {
    println(file.getAbsolutePath)
 })                                               //> C:\Eclipse\scala-SDK-3.0.2-vfinal-2.10-win32.win32.x86\eclipse\test1
                                                  //| res0: scala.collection.immutable.Stream[Unit] = Stream((), ?)
读取流是一种特殊类型的Iterable/Traversable,其元素在被请求之前不会被评估。流通常构造为函数。既然我在流上使用map,那么是否应该计算流中包含的每个文件并输出其名称

更新:我发现这很有用,是使用Stream的一种替代方法:

如果您在寻找println的副作用,请不要映射而是循环

如果你在寻找println的副作用,不要映射而是循环

根据Stream.map文档:

返回将给定函数f应用到的流 此流的每个元素。这将返回一个惰性流,以便 不需要完全实现

因此,使用map不会评估流,而是生成一个新流。

根据stream.map文档:

返回将给定函数f应用到的流 此流的每个元素。这将返回一个惰性流,以便 不需要完全实现

因此,使用map不会计算流,而是生成一个新流

scala> var fList = Stream(new java.io.File("foo1") , new java.io.File("foo2"))
fList: scala.collection.immutable.Stream[java.io.File] = Stream(foo1, ?)

scala> fList.foreach(f => println(f.getAbsolutePath))
/tmp/foo1
/tmp/foo2

scala> fList take 2 foreach(f => println(f.getAbsolutePath))
/tmp/foo1
/tmp/foo2