欢迎!请参阅关于页面以了解有关该平台的信息。
我实际上在寻找 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。所以...我可以简单地复制包,或者宏(在包顶部的许可证中进行归属),然后看看它是否适用于您的用例(很可能会成功,看起来并不太奇怪)。
另一种选择是只需将您大量使用的所有静态类方法包装在函数中。我也可以想象出执行此操作的宏;你可能想保留类型信息等。