Синглтон объект LongLines, который я создал, не может быть распознан в объекте с основной функцией (FindingLines). Я помещаю их файлы (LongLines.scala, FindingLines.scala) в каталог / src / main / scala / com / files / lines. Программный код должен найти в конкретном файле строки, длина которых превышает параметр width .
Коды:
1) LongLines.scala (версия из книги, которую я изучаю):
package com.files.lines
import scala.io.Source
object LongLines {
def processFile(filename: String, width: Int) {
val source = Source.fromFile(filename)
for (line <- source.getLines())
processLine(filename, width, line)
}
private def processLine(filename: String,
width: Int, line: String) {
if (line.length > width)
println(filename +": "+ line.trim)
}
}
2) LongLines.scala (моя собственная версия):
package com.files.lines
import scala.io.Source._
import java.nio.files.Paths._
object LongLines {
def processFile(filePath: String, width:Int): Unit = {
val path = get(filePath)
val fileName = path.getFileName.toString
val lines = fromFile(filePath).getLines().toList
for (line<-lines) processLines(fileName,line,width)
}
private def processLines(fileName: String, line: String, width: Int): Unit = {
if (line.length() > width) println(s"$fileName: $line");
}
}
3) FindingLines.scala (версия книги, которую я использовал - только версия):
package com.files.lines
object FindLongLines {
def main(args: Array[String]) = {
val width = args(0).toInt
for (arg <- args.drop(1))
LongLines.processFile(arg, width)
}
}
Ошибка (скомпилирована из терминала linux):
После того, как я скомпилировал программу с моей версией и книжной версией LongLines.scala (отдельно, конечно):
scalac FindingLines.scala
У меня есть эта ошибка:
FindLongLines.scala:15: error: not found: value LongLines
LongLines.processFile(arg, width)
^
one error found