2010-07-22 25 views
6

Tôi đang cố gắng để tạo ra một dòng vô hạn của chuỗi từ readLine gọi:Suối readlines

import java.io.{BufferedReader, InputStreamReader} 
val in = new BufferedReader(new InputStreamReader(System in)) 
val input: Stream[String] = Stream.cons(in readLine, input) 

Nhưng dường như cuộc gọi readLine không được gọi là lười biếng. Ngay lập tức sau khi nhập mã đó, readLine mong đợi đầu vào sau đó Stream trở thành một danh sách vô hạn của cùng một đầu vào đó. Có thể hoàn thành những gì tôi có trong đầu không?

Trả lời

11
import java.io.{BufferedReader, InputStreamReader} 
val in = new BufferedReader(new InputStreamReader(System in)) 
val input = Stream.continually(in readLine) 
+0

Bạn không cần phải đóng luồng? – Programmer

3

Xem ví dụ tại Stream. Lưu ý rằng thân cây lười biếng ở đuôi, không phải là đầu. Mỗi lần thunk được gọi nó sẽ trả về khuyết điểm tiếp theo (bao gồm cả thunk tiếp theo mà đến lượt nó sẽ cung cấp cho cons tiếp theo bao gồm ....)

Đây là chữ ký cho Stream.cons: < http://www.scala-lang.org/docu/files/api/scala/collection/immutable/Stream $$ cons $ .html >. Lưu ý thunk (=> Stream) làm đối số thứ 2 cho apply.

Các vấn đề liên quan