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 库已经弃用且很旧,所以我恐怕不建议使用它。

by
这大致就是我担心的。啊,不过还是谢谢你。
+1
by

这里(链接)提供的源代码小极了,仅依赖于 clojure.set。所以……我只需复制 ns 或宏(注释来源于命名空间顶部许可证),看看它是否适合您的用法(可能,看起来不太复杂)。

另一种选择是将您大量使用的所有静态类方法封装在函数中。我也可以设想出做这件事的宏;你可能还想保留类型信息等。

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