¿Cuál es la receta de Scala para leer línea por línea desde la entrada estándar? Algo parecido al código java equivalente:
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
fuente
fuente
scala.io.StdIn
Para la consola puedes usar
Console.readLine
. Puede escribir (si desea detenerse en una línea vacía):Si obtiene un archivo para generar la entrada, es posible que deba detenerse en nulo o vacío usando:
fuente
takeWhile(_ != null)
Console.readLine
está obsoleto, utiliceStdIn.readline
en su lugar..takeWhile(Option(_).nonEmpty)
podría sentirse mejor en caso de que desee evitar lanull
palabra clave por completo.fuente
io.Source.stdin
está definido (enscala.io.Source
clase), pordef stdin = fromInputStream(System.in)
lo que probablemente sea mejor seguir con elio.Source.stdin
.collect
método se cambia en esta respuesta, por lo que solo tiene que llamar, loinput.getLines
que le da un archivoIterator
. Puede forzarlo a materializarse usando.toStream
o.toList
sobre él, depende del caso de uso.Una versión recursiva (el compilador detecta una recursividad de cola para mejorar el uso del montón),
Tenga en cuenta el uso de
io.StdIn
Scala 2.11. También tenga en cuenta que con este enfoque podemos acumular la entrada del usuario en una colección que finalmente se devuelve, además de imprimirse. A saber,fuente
No puedes usar
Disponible aquí: API Scaladoc
fuente
Como se señaló brevemente en otros comentarios,
scala.Predef.readLine()
está obsoleto desde Scala 2.11.0, y puede reemplazarlo conscala.io.StdIn.readLine()
:fuente