これは Scala での私の最初のプログラムです。だから、愚かさの免疫を獲得したいと思います。
このコードは、 のスニペットを 1 行変更したものProgramming in Scala
です。
私がしているのは
- テキストファイルの読み取り
- ファイルの行を繰り返す
- ファイル内の行の最大長を出力します。
それはうまくいきます。
さて、各行を行の長さとともに印刷しようとすると、
println (eachLine + ":" + eachLine.length)
エラーがスローされます。
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' の前にセミコロンがないのでしょうか?