Поток readLines

Я пытаюсь создать бесконечный поток строк от вызовов 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 ожидает вход затем, Поток становится бесконечным списком того же самого входа. Действительно ли возможно выполнить то, что я имею в виду?

7
задан Ukonu 22 July 2010 в 06:11
поделиться

2 ответа

import java.io.{BufferedReader, InputStreamReader}
val in = new BufferedReader(new InputStreamReader(System in))
val input = Stream.continually(in readLine)
11
ответ дан 6 December 2019 в 15:17
поделиться

См. Пример в Stream . Обратите внимание, что ленивый преобразователь находится в хвосте, а не в голове . Каждый раз, когда вызывается преобразователь, он должен возвращать следующие минусы (включая следующий преобразователь, который, в свою очередь, должен предоставлять следующие минусы, включая ....)

Вот подпись для Stream.cons: < http: / /www.scala-lang.org/docu/files/api/scala/collection/immutable/Stream $$ cons $ .html>. Обратите внимание на преобразователь (=> Stream) как второй аргумент для apply .

3
ответ дан 6 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: