scala yield的使用方法
今天无意间发现这个就琢磨了一下,就如下例子讲述一下自己的看法,希望有错的地方,大家能够指教指教。
yield的用法一个句话,就是在for循环中,每次循环都会产生一个值,然后将每次产生的值保存,最后组成一个集合。
话不多说,上代码
例子:
import java.io.File
import scala.io.Source
object test_io {
//列出该目录下有多少文件
lazy val files=(new File("D:\\ExploreTool\\Idea2018Workspase")).listFiles
def fileLine(file:java.io.File)={
//将文件的内容转换成列表的形式
Source.fromFile(file).getLines().toList
}
def main(args: Array[String]): Unit = {
// for(file <- files){println(file)}
val total= for{
file<-files
line<-fileLine(file)
trimedLine=line.trim
} yield trimedLine+"一共"+trimedLine.length+"个字"
total.foreach(println)
}
}
结果:
dasfas gsdgj一共12个字
agsdga agsga一共12个字
gasdgbagbagag一共13个字
注意:yield trimedLine+“一共”+trimedLine.length+"个字"该处,yield后面跟一个参数,是每次获取值得那个参数,最后集合的值也都是这个参数中的如果我将它改成个
yield line
结果打印的就是
dasfas gsdgj
agsdga agsga
gasdgbagbagag
改成 file
结果就是
D:\ExploreTool\Idea2018Workspase\Demo.txt
D:\ExploreTool\Idea2018Workspase\Demo.txt
D:\ExploreTool\Idea2018Workspase\Demo.txt
额,代码写的不规范