如何从目录中加载每个clojure文件?
以下代码不起作用,但说自己("文件夹"在我的src /项目目录中)
(load "folder/*")
Run Code Online (Sandbox Code Playgroud)
下面的函数,你在找什么,给你的描述似乎并不需要检查的依赖性,因此函数不会做任何事情,但使用的情况下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 ".")
Run Code Online (Sandbox Code Playgroud)
文档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 %))
Run Code Online (Sandbox Code Playgroud)
如果要加载目录树中的所有文件,则可以file-seq
按照@edbond的建议使用.
(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 %))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1137 次 |
最近记录: |