Sé que es posible usar un bucle while para obtener una entrada de varias líneas de stdin usando la función readLine.
¿Hay una función en kotlin para recuperar todas las líneas a la vez desde stdin sin usar una API JVM?
val input = generateSequence(::readLine).joinToString("\n") print(input)La primera línea obtiene la entrada multilínea de stdin y la coloca en una variable.
El generateSequence es una función de la biblioteca estándar de Kotlin, paquete kotlin.sequences , que toma otra función y la llama hasta que devuelve un valor nulo. Al final, devolverá una instancia de Sequence, que es una secuencia de elementos que se pueden iterar.
La parte ::readLine es una forma de pasar la función readLine , que se usa para leer desde stdin, a la función generateSequence . Simplemente llamar a readLine() sin :: provocará un error del compilador ya que generateSequence espera una lambda, no una cadena.
El método joinToString pertenece a la clase Sequence. Iterará sobre sus elementos y los unirá usando el separador dado, que, en este caso, es una nueva línea (\n).
Finalmente, en la segunda línea, imprimimos el resultado en la salida estándar.