这是我在
Scala上的第一个程序.所以,我希望能得到愚蠢的豁免.
我所做的一切都是
这样可行.
现在,当我尝试打印每行与线的长度一起
println (eachLine + ":" + eachLine.length)
我从这个link在SO中了解到,我应该在某个地方加一个括号.但在哪里和为什么?
import scala.io.source class Loops { } object Loops{ def main (args:Array[String]){ printAllLines("Hello123.txt") } def printAllLines(fileName:String){ var maxWidth=0 var lineIterator=Source.fromFile(fileName).getLines; lineIterator.foreach((eachLine:String) => println (eachLine + ":" + eachLine.length) maxWidth=maxWidth.max(eachLine.length) //Compilation ERROR at this line ) Console.out.println (maxWidth) }
//这个工作!
def printAllLinesFor(fileName:String){ var maxWidth=0 for (eachLine<-Source.fromFile(fileName).getLines.toList){ println (eachLine + ":" +eachLine.length) maxWidth=maxWidth.max(eachLine.length) } println (maxWidth) }
}
错误:值maxWidth不是Unit的成员
//可能的原因:在“value maxWidth”之前,分号可能会丢失?
解决方法
更改
lineIterator.foreach((eachLine:String) => println (eachLine + ":" + eachLine.length) maxWidth=maxWidth.max(eachLine.length) //Compilation ERROR at this line )
至
lineIterator.foreach{ (eachLine:String) => println (eachLine + ":" + eachLine.length) maxWidth=maxWidth.max(eachLine.length) //Compilation ERROR at this line }
应该解决这个问题.
注意foreach {…}和foreach(…)之间的区别,如果你的foreach块有多行,你应该使用{}.