可以删除此“if”语句吗?

时间:2013-08-09 13:11:44

标签: scala

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

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

2 个答案:

答案 0 :(得分:5)

我想这就够了:

val toIterate =
  if(useAllLines)
    lines
  else
    lines.take(linesToReadFromDataFile)

for ( line <- toIterate ) {
  ...
}

您还可以将useAllLineslinesToReadFromDataFile合并到Option[Int]类型的单个变量中:

val toIterate = optionLinesToReadFromDataFile.map{ lines.take(_) }.getOrElse(lines)

答案 1 :(得分:0)

lines.take(if (useAllLines) lines.length else linesToReadFromDataFile).foreach(