我正在尝试从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立即进行输入,然后Stream成为同一输入的无限列表。是否有可能实现我的想法?
答案 0 :(得分:11)
import java.io.{BufferedReader, InputStreamReader}
val in = new BufferedReader(new InputStreamReader(System in))
val input = Stream.continually(in readLine)
答案 1 :(得分:3)
请参阅Stream上的示例。请注意,懒惰的thunk在尾部,而不是头部。每次调用thunk时它应该返回下一个cons(包括下一个thunk,而下一个thunk应该提供下一个cons ...)
以下是Stream.cons的签名:< http://www.scala-lang.org/docu/files/api/scala/collection/immutable/Stream $$ cons $ .html>。请注意thunk(=> Stream)作为apply
的第二个参数。