在Clojure中,在包含从Java序列化的浮点值的文件中获取延迟序列会是什么? (我玩过一个玩具 with-open
基于行读取示例的方法,但似乎无法连接点以将流作为浮点数处理。)
谢谢。
在Clojure中,在包含从Java序列化的浮点值的文件中获取延迟序列会是什么? (我玩过一个玩具 with-open
基于行读取示例的方法,但似乎无法连接点以将流作为浮点数处理。)
谢谢。
(defn float-seqs [#^java.io.DataInputStream dis]
(lazy-seq
(try
(cons (.readFloat dis) (float-seqs dis))
(catch java.io.EOFException e
(.close dis)))))
(with-open [dis (-> file java.io.FileInputStream. java.io.DataInputStream.)]
(let [s (float-seqs dis)]
(doseq [f s]
(println f))))
如果您确定要使用整个seq,则不需要使用with-open。
如果你使用with-open,请仔细检查你是否没有将seq(或派生的seq)泄露到其范围之外。