我使用此代码将文件读入内存:
val lines = Source.fromFile(fileToRead, "utf-8").getLines
迭代我使用的一些行:
lines.take(linesToReadFromDataFile).foreach(line => {
有时我可能想要迭代所有行:
lines.foreach(line => {
要确定是否真实所有行我可以使用布尔值'useAlllines'并执行以下操作:
if(useAllLines)
lines.foreach(line => {
else
lines.take(linesToReadFromDataFile).foreach(line => {
使用Scala有更好的方法来实现这一目标吗?
答案 0 :(得分:5)
我想这就够了:
val toIterate =
if(useAllLines)
lines
else
lines.take(linesToReadFromDataFile)
for ( line <- toIterate ) {
...
}
您还可以将useAllLines
和linesToReadFromDataFile
合并到Option[Int]
类型的单个变量中:
val toIterate = optionLinesToReadFromDataFile.map{ lines.take(_) }.getOrElse(lines)
答案 1 :(得分:0)
lines.take(if (useAllLines) lines.length else linesToReadFromDataFile).foreach(