Я пытаюсь создать бесконечный поток строк от вызовов readLine:
import java.io.{BufferedReader, InputStreamReader}
val in = new BufferedReader(new InputStreamReader(System in))
val input: Stream[String] = Stream.cons(in readLine, input)
Но кажется, что вызов readLine не называют лениво. Сразу после ввода того кода, readLine ожидает вход затем, Поток становится бесконечным списком того же самого входа. Действительно ли возможно выполнить то, что я имею в виду?
import java.io.{BufferedReader, InputStreamReader}
val in = new BufferedReader(new InputStreamReader(System in))
val input = Stream.continually(in readLine)
См. Пример в Stream . Обратите внимание, что ленивый преобразователь находится в хвосте, а не в голове . Каждый раз, когда вызывается преобразователь, он должен возвращать следующие минусы (включая следующий преобразователь, который, в свою очередь, должен предоставлять следующие минусы, включая ....)
Вот подпись для Stream.cons: < http: / /www.scala-lang.org/docu/files/api/scala/collection/immutable/Stream $$ cons $ .html>. Обратите внимание на преобразователь (=> Stream) как второй аргумент для apply
.