引入了Clojure 1.5 clojure.edn,其中包括一个需要a的读取功能PushbackReader.
如果我想阅读前五个对象,我可以这样做:
(with-open [infile (java.io.PushbackReader. (clojure.java.io/reader "foo.txt"))]
(binding [*in* infile]
(let [edn-seq (repeatedly clojure.edn/read)]
(dorun (take 5 (map println edn-seq))))))
Run Code Online (Sandbox Code Playgroud)
我怎样才能打印出所有对象?考虑到其中一些可能是nils,似乎我需要检查EOF或类似的东西.我希望有一系列类似于我得到的对象line-seq.
Hen*_*gon 15
使用:eof键
http://clojure.github.com/clojure/clojure.edn-api.html
opts是一个可以包含以下键的映射:: eof - 在文件结尾返回的值.如果没有提供,eof会抛出异常.
编辑:抱歉,这还不够详细!在这里y'go:
(with-open [in (java.io.PushbackReader. (clojure.java.io/reader "foo.txt"))]
(let [edn-seq (repeatedly (partial edn/read {:eof :theend} in))]
(dorun (map println (take-while (partial not= :theend) edn-seq)))))
Run Code Online (Sandbox Code Playgroud)
应该这样做
| 归档时间: |
|
| 查看次数: |
5381 次 |
| 最近记录: |