欢迎!请查看 关于 页面了解此功能的更多信息。
我在寻找 Clojure 中对应 Java 的 import static 的版本。我明白这通常是不良的实践,但我正在使用 LWJGL,它有许多像 GLFW/glfwSetWindowPos 和 GLFW/glfwMakeContextCurrent 这样的静态方法,方法的命名空间是方法名的一部分(因为它是 C 库的薄包装器)。我发现这种重复使得代码的视觉噪声增加,使得代码更难阅读,特别是在双重命名空间函数如
import static
GLFW/glfwSetWindowPos
GLFW/glfwMakeContextCurrent
(GL15/glCreateShader GL15/GL_VERTEX_SHADER)
我找到了 https://clojure.github.io/clojure-contrib/import-static-api.html,但由于 clojure.contrib 已弃用,我宁愿不依赖它。
没有等效功能。你提供的链接是我所知的此类实现中最好的。clojure-contrib 库已弃用且相当陈旧,所以我恐怕不会推荐使用它。
链接来自的源代码很小,只依赖于 clojure.set 。所以... 我会复制命名空间或宏(同时附带命名空间顶部的许可证来源)看看它是否适用于您的用例(可能,看起来不太特别)。
另一选项是将您经常使用的所有静态类方法包装在函数中。我想象宏也可以做这个;您可能希望保留类型信息等。