我有这段代码:
for (f <- file_list){
val file_name = path + "\\" + f + ".txt"
val line_list = Source.fromFile(file_name).getLines()
println (file_name + ": " + line_list.length)
println (file_name + ": " + line_list.length)
total_number_lines += line_list.size
}
Run Code Online (Sandbox Code Playgroud)
我有一个文件列表,对于每个文件我打开它,加载它作为它的行列表然后我计算列表中的行数.
前者调用line_list.length给出正确的行号值,但后者总是返回零.实际上,length执行该函数后,line_list列表似乎是空的.
我真的不明白为什么会这样.
我错过了什么?
Source.getLines()返回一个Iterator[String],而不是一个集合,所以调用.length它将完全消耗它.
Source.fromFile(file_name).getLines().toList如果您想多次使用它,可以使用.
getLines()返回一个Iterator[String],你只能遍历一次迭代器.调用length耗尽迭代器,因此在到达结束时后续调用length和size调用它,因此它显示为空:
特别重要的是要注意,除非另有说明,否则在调用方法之后永远不应使用迭代器.两个最重要的例外也是唯一的抽象方法:next和hasNext.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |