2024 年 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面以了解有关该平台的信息。

+2
Clojure
编辑

我实际上在寻找 Clojure 中的 Java import static 的版本。我明白这通常是不良做法,但我正在与 LWJGL 合作,它有大量静态方法,如 GLFW/glfwSetWindowPosGLFW/glfwMakeContextCurrent,其中命名空间是方法名的一部分(因为它是对 C 库的封装)。我发现重复添加了很多视觉噪音,使得代码难以阅读,尤其是在双命名空间函数使用双命名空间参数时,就像在

(GL15/glCreateShader GL15/GL_VERTEX_SHADER)

我找到了https://clojure.github.io/clojure-contrib/import-static-api.html,但鉴于 clojure.contrib 已弃用,我更愿意不依赖于它。

2 答案

+2

不,没有等效的。我了解的最好的实现就是您链接中的那个。由于 clojure-contrib 库已被弃用且相当陈旧,因此我不建议使用它。

这正是我所担忧的。哦,不过还是要感谢。
+1 投票

链接中的源代码相当小,仅依赖于 clojure.set。所以...我可以简单地复制包,或者宏(在包顶部的许可证中进行归属),然后看看它是否适用于您的用例(很可能会成功,看起来并不太奇怪)。

另一种选择是只需将您大量使用的所有静态类方法包装在函数中。我也可以想象出执行此操作的宏;你可能想保留类型信息等。

粗略一看,这就是 contrib 工具所做的。
...