gpt4 book ai didi

clojure - 从 clojure 中的目录加载所有文件

转载 作者:行者123 更新时间:2023-12-02 04:41:44 27 4
gpt4 key购买 nike

如何从目录加载每个 clojure 文件?

下面的代码不起作用,但能说明问题(“文件夹”在我的 src/project 目录中)

(load "folder/*")

最佳答案

以下函数可以满足您的需求,考虑到您描述的场景,似乎没有必要检查依赖关系,因此该函数除了使用 load-file 之外什么都不做提供路径中的文件。

(defn load-files [path]
(let [file (java.io.File. path)
files (.listFiles file)]
(doseq [x files]
(when (.isFile x)
(load-file (.getCanonicalPath x))))))

(load-files ".")

listFiles 的文档假设无法保证文件返回的顺序,因此可能的改进是提供一个键函数(一个返回完成排序的键的函数)来进行排序。

(defn load-files [path f]
(let [file (java.io.File. path)
files (sort-by f (.listFiles file))]
(doseq [x files]
(when (.isFile x)
(load-file (.getCanonicalPath x))))))

(load-files "." #(.getName %))

如果您想加载目录树中的所有文件,那么您可以按照@edbond 的建议使用file-seq .

(defn load-files [path f]
(let [files (->> path java.io.File. file-seq (sort-by f))]
(doseq [x files]
(when (.isFile x)
(load-file (.getCanonicalPath x))))))

(load-files "." #(.getName %))

关于clojure - 从 clojure 中的目录加载所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701943/

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