相关疑难解决方法(0)

如何在clojure中读取stdin(*in*)中的行

我正在编写我的第一个clojure程序,并希望从stdin读取行.

当我尝试这个:

(doall (map #(println %) (line-seq *in*)))
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

Exception in thread "main" java.lang.ClassCastException: clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader (test.clj:0)
Run Code Online (Sandbox Code Playgroud)

我在版本1.0和1.1中得到了相同的结果

那么如何转换*in*为seq我可以迭代?我会认为这很常见,*in*本身可以迭代,但这也不起作用 - 如果我尝试直接使用它,我得到:

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.LineNumberingPushbackReader (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)

另外,有没有在clojure中进行常规文件处理的例子?

stdin clojure

38
推荐指数
4
解决办法
1万
查看次数

将一个非常大的文本文件读入clojure中的列表

在clojure中将一个非常大的文件(比如每行一个有10万个名字的文本文件)读入一个列表(懒惰地 - 根据需要加载它)的最佳方法是什么?

基本上我需要对这些项进行各种字符串搜索(我现在用shell脚本中的grep和reg ex做).

我尝试在结尾添加'(在开头和结尾),但显然这个方法(加载一个静态?/常量列表,由于某种原因有一个大小限制.

text file clojure

26
推荐指数
3
解决办法
1万
查看次数

标签 统计

clojure ×2

file ×1

stdin ×1

text ×1