Dies ist mein allererster Versuch für scala in play framework. Was ich wirklich erreichen möchte, ist, jedes erste Wort aus Sätzen in einem Absatz zu nehmen.Sequence Map löst einen Fehler aus: NoSuchElementException: next on leerer Iterator
Dies ist der Code, der
Text ist mutable.Seq [Zeichenfolge]
someText.flatMap(_ split "[.?!]")
.map(_ split "\\s+" filter !_.equals("") head)
.toList
Aber das Problem ist auf der 2. Zeile einen Fehler wirft. Es löst eine Fehlermeldung, dass:
[NoSuchElementException: next on empty iterator]
In meiner bescheidenen Meinung nach, Satz durch Leerzeichen getrennt wird nicht leer sein, solange der sometext ein echter Absatz mit vielen Sätzen.
Könnte jemand klären, wie dies geschehen könnte und wie man es beheben könnte?
Sie verwenden '.head' die unsicher ist. Besser, '.headOption' zu verwenden. – cchantep
@cchantep Danke. 'headOption' behebt dies. –
Die Verwendung von 'headOption' wird das Problem beheben, wird Ihnen aber nicht sagen, was es war. Es ändert auch den Typ des Ergebnisses. Denken Sie darüber nach, was passiert, wenn einer der Eingabezeichenfolgen leer ist oder nur Leerzeichen enthält. Sie sollten lernen, Debugging (oder Ausdruckanweisungen) zu verwenden, um solche Fragen selbst zu beantworten. – Dima