0

我使用此代码将文件读入内存:

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 有没有更好的方法来实现这一点?

4

2 回答 2

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)
于 2013-08-09T13:14:30.270 回答
0
lines.take(if (useAllLines) lines.length else linesToReadFromDataFile).foreach(
于 2013-08-09T15:43:27.630 回答