Beachten Sie Folgendes:für Verständnis, Wach- und RandomAccessFile.readLine
Es gibt eine Text-Datei mit einer bestimmten Menge von Linien, wie:
test.txt: a b c d e f g h
(jeweils dort eigene Linie)
Dann gibt es die folgende Klasse für die Analyse verwendet:
class MyAwesomeParser
{
def parse(fileName: String, readLines: Int): IndexedSeq[String] =
{
val randomAccessFile = new RandomAccessFile(fileName, "r")
val x: IndexedSeq[String] = for
{
x <- 0 until readLines
r = randomAccessFile.readLine()
} yield r
x
}
}
Hier kommen die Tests:
class MyAwesomeParserTest extends WordSpec
{
"MyAwesomeParser" when {
"read" should {
"parse only specified number of lines" in {
val parser = new EdgeParser("")
val x = parser.parse("test.txt", 5)
assert(x.size == 5)
}
}
"MyAwesomeParser" when {
"read" should {
"parse only until end of file" in {
val parser = new EdgeParser("")
val x = parser.parse("test.txt", 10)
assert(x.size == 8)
}
}
}
}
Zweiter Test liegt das Problem. Jetzt natürlich sagen Sie, sind Sie hier eine Wache fehlt ... na ja, gut, wenn ich
x <- 0 until readLines if randomAccessFile.readLine != null
zur Umsetzung fügen Sie dann springt es ein paar Zeilen, weil bereits die Linie readline verbraucht.
wird leider nicht funktionieren, da die erste Zeile eine Zuordnung zum Verständnis sein muss.
Nun frage ich mich, ist es überhaupt möglich, mit einem für das Verständnis bis zu einer bestimmten Anzahl von Wiederholungen ODER vor dem readLine != null
Zustand zu stoppen?
Ist meine Syntax gerade gebrochen?
Ah, Mist ... Ich habe versucht, ein kleines Beispiel zu geben, aber ich will keine Arbeit für mein spezifisches Problem, aber eher eine generische Lösung – Sorona