请分享您的想法,参加 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 工具所做的事情。
...