gpt4 book ai didi

java - 在clojure中制作一个插件系统

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:35 24 4
gpt4 key购买 nike

我想知道是否有可能以及如何实现模块系统。

这是它如何工作的例子:我有一些文件夹(例如 modules),这个文件夹有一堆导出一些变量的 clojure 文件(例如 nameregex), 所有模块都加载到一个列表中,因此可以迭代并从中删除模块。

最佳答案

您可以做的最简单的事情就是使用load-file 一个一个地加载所有这些文件。 https://clojuredocs.org/clojure.core/load-file

否则你可以预编译插件的命名空间并使用一些 java 的本地技术加载它们(我不太了解,但我想有一些不错的库)

更新:对于一些名为“/my/path”的目录,它可能如下所示:

(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")))))

关于java - 在clojure中制作一个插件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127754/

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