1
我想知道是否有可能以及如何实现模块系统。在clojure中制作插件系统
这里的例子是如何工作的:我有一些文件夹(如modules
),这个文件夹中有为数众多的出口一些变量的Clojure文件(例如name
和regex
),所有模块被加载到一个列表中,这样有可能迭代和模块可以从中删除。
我想知道是否有可能以及如何实现模块系统。在clojure中制作插件系统
这里的例子是如何工作的:我有一些文件夹(如modules
),这个文件夹中有为数众多的出口一些变量的Clojure文件(例如name
和regex
),所有模块被加载到一个列表中,这样有可能迭代和模块可以从中删除。
你可以做的最简单的事情就是用load-file
一个接一个地加载所有这些文件。 https://clojuredocs.org/clojure.core/load-file
否则你预编译的插件的命名空间,并使用一些Java的原生技术,装载它们(这我不很了解,但我想有一些不错的库为)
更新: 一些目录名为“/我的/路径”它可能看起来如下:
(run! #(load-file (.getAbsolutePath %))
(rest (file-seq (java.io.File. "/my/path"))))
通知,该file
SEQ递归遍历目录,包括所有文件(不仅*.clj
) 。也许你必须过滤它们:
(run! #(load-file (.getAbsolutePath %))
(filter
#(clojure.string/ends-with? (.getName %) ".clj")
(rest (file-seq (java.io.File. "/my/path")))))
如何在使用'load-file'时将模块放入列表中? –
更新了我的答案 – leetwinski