Cod*_*er0 2 functional-programming scala foldleft
我有以下代码片段:
import scala.io.Source
object test extends App {
val lineIterator = Source.fromFile("test1.txt").getLines()
val fileContent = lineIterator.foldLeft(List[String]())((list, currentLine) => {
currentLine :: list
list
})
fileContent foreach println
}
Run Code Online (Sandbox Code Playgroud)
假设test1.txt文件不为空,并且其中包含一些值。所以我对foldLeft函数的问题是,为什么此示例在此返回一个空列表,而当我list在foldLeft函数末尾删除时,它可以正常工作?为什么在值下返回一个空列表fileContent?
该行currentLine :: list不会更改原始列表。它创建一个带有currentLine前缀的新列表,并返回该新列表。如果该表达式不是您块中的最后一个表达式,它将被丢弃,并list返回(仍然)为空。
list最后删除时,您实际上会返回currentLine :: list。