Was ist das Scala-Rezept zum zeilenweisen Lesen von der Standardeingabe? So etwas wie der entsprechende Java-Code:
import java.util.Scanner;
public class ScannerTest {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.nextLine());
}
}
}
java
scala
io
java.util.scanner
Andrei Ciobanu
quelle
quelle
scala.io.StdIn
Für die Konsole können Sie verwenden
Console.readLine
. Sie können schreiben (wenn Sie in einer leeren Zeile anhalten möchten):Wenn Sie eine Datei katzen, um die Eingabe zu generieren, müssen Sie möglicherweise mit null oder leer anhalten, indem Sie:
quelle
takeWhile(_ != null)
Console.readLine
veraltet ist. Verwenden SieStdIn.readline
stattdessen..takeWhile(Option(_).nonEmpty)
fühlen Sie sich besser, wenn Sie dasnull
Schlüsselwort vollständig vermeiden möchten .quelle
io.Source.stdin
ist definiert (in derscala.io.Source
Klasse) alsdef stdin = fromInputStream(System.in)
so wahrscheinlich ist es besser, bei der zu bleibenio.Source.stdin
.collect
Methode in dieser Antwort geändert wird, so dass Sie nur aufrufen müsseninput.getLines
, was Ihnen eine gibtIterator
. Sie können es zwingen, mit.toStream
oder.toList
auf es zu materialisieren , abhängig vom Anwendungsfall.Eine rekursive Version (der Compiler erkennt eine Endrekursion für eine verbesserte Heap-Nutzung),
Beachten Sie die Verwendung
io.StdIn
von Scala 2.11. Beachten Sie auch, dass wir mit diesem Ansatz Benutzereingaben in einer Sammlung sammeln können, die schließlich zurückgegeben wird - zusätzlich zum Ausdrucken. Nämlich,quelle
Kannst du nicht benutzen
Wie hier verfügbar: Scaladoc API
quelle
Wie in anderen Kommentaren kurz erwähnt,
scala.Predef.readLine()
ist es seit Scala 2.11.0 veraltet und Sie können es ersetzen durchscala.io.StdIn.readLine()
:quelle