gpt4 book ai didi

clojure - 如何在 Clojure 中读取 stdin 中的所有行

转载 作者:行者123 更新时间:2023-12-03 00:34:55 26 4
gpt4 key购买 nike

我正在写一个Brainf*** Clojure 中的解释器。我想通过使用标准输入的程序。但是,我稍后仍然需要从标准输入中读取用户输入。

目前,我正在这样做:

$ cat sample_programs/hello_world.bf | lein trampoline run

我的 Clojure 代码仅使用 read-line 读取第一行:

(defn -main
"Read a BF program from stdin and evaluate it."
[]
;; FIXME: only reads the first line from stdin
(eval-program (read-line)))

如何读取我通过管道传入的文件中的所有行? *in* 似乎是 java.io.Reader 的一个实例,但它只提供 .read (一个字符), .readLine(一行)和read(char[] cbuf, int off, int len)(看起来级别很低)。

最佳答案

将所有输入数据作为单个字符串读取非常简单:

(defn -main []
(let [in (slurp *in*)]
(println in)))

如果您的文件可以容纳在可用内存中,则此方法可以正常工作;对于延迟读取大文件,请参阅 this answer .

关于clojure - 如何在 Clojure 中读取 stdin 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com