gpt4 book ai didi

clojure - 有没有办法读取 clojure 文件中的所有表单?

转载 作者:行者123 更新时间:2023-12-03 00:27:33 24 4
gpt4 key购买 nike

如果我使用

(-> "<file>.clj" 
(slurp)
(read-string))

这只会读取文件中的第一个表单(通常是 ns 声明)。有没有办法从文件中检索表单列表?

我希望不使用外部库。

最佳答案

此函数打开一个流供 Clojure 读取,并急切地读取该流中的所有表单,直到 read 抛出异常(如果存在解析错误,或者没有更多表单可供读取,则会发生这种情况)。

(import '[java.io PushbackReader])
(require '[clojure.java.io :as io])

(defn read-all
[file]
(let [rdr (-> file io/file io/reader PushbackReader.)]
(loop [forms []]
(let [form (try (read rdr) (catch Exception e nil))]
(if form
(recur (conj forms form))
forms)))))

关于clojure - 有没有办法读取 clojure 文件中的所有表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922478/

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