【发布时间】:2010-01-09 16:47:03
【问题描述】:
我正在编写我的第一个 clojure 程序,并且想从标准输入读取行。
当我尝试这个时:
(doall (map #(println %) (line-seq *in*)))
我得到了这个例外:
Exception in thread "main" java.lang.ClassCastException: clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader (test.clj:0)
我在 1.0 和 1.1 版本中得到相同的结果
那么如何将*in* 转换为可以迭代的序列?我原以为这很常见,*in* 本身是可迭代的,但这也不起作用 - 如果我尝试直接使用它,我会得到:
java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.LineNumberingPushbackReader (NO_SOURCE_FILE:0)
另外,有没有在 clojure 中进行一般文件处理的示例?
【问题讨论】:
-
将 (map #(println %) (line-seq.. )) 替换为 (map println (line-seq..)) 会很好