for 的作用結(jié)合了 flatMap, map 和 filter 观蜗;如果打算做的事情非常簡(jiǎn)單,下面兩種方式的寫(xiě)法可讀性都非常好;但是如何需要把 flatMap, map, 和 filter 串聯(lián)起來(lái)實(shí)現(xiàn)復(fù)雜的操作,那么 for 語(yǔ)法糖的作用就非常簡(jiǎn)單明了了妈倔。
val filterMapFlatmapVersion: List[String] =
fileNames.filter(_.endsWith("txt")).flatMap { file =>
io.Source.fromFile(file).getLines().toList.map(_.trim).filter(_ == pattern)
}
val forVersion: List[String] =
for {
fileName <- fileNames
if fileName.endsWith("txt")
line <- io.Source.fromFile(fileName).getLines()
if line.trim().matches(pattern)
} yield line.trim