这是我在
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块有多行,你应该使用{}.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。