欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。
我基本上在寻找 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。所以...我只需复制 ns 或宏(引用商标名称上方的许可证中的版权信息),然后看看它是否适用于您的用例(可能不会太特别)。
另一种选择是只需将您大量使用的所有静态类方法包装在函数中。我还可以设想执行此操作的宏;你可能想保留类型信息和类似信息。