clojure-java-interop相关内容

为什么 Clojure 有 5 种方法来定义类而不是只有一种?

Clojure 有 gen-class、reify、proxy 以及 deftype 和 defrecord 来定义新的类数据类型.对于一种重视语法简单并厌恶不必要的复杂性的语言来说,这似乎是一种失常.有人可以解释为什么会这样吗?Common Lisp 风格的 defclass 就够了吗? 解决方案 这是三个不同因素的混合: jvm 的特定类型系统 在定义类型时需要针对不同的用例使 ..
发布时间:2022-01-02 22:55:12 其他开发

Java 和 Clojure 与 Leiningen

是否可以使用 leiningen 在项目中与 Clojure 一起轻松管理和编译本机 Java 类? 我在一个相当低的级别(使用 netty nio)工作,并认为在构建代码和性能方面,一些管道类实际上更容易作为原始 Java 处理. 解决方案 在 莱宁根教程 有如下声明 对于包含一些 Java 代码的项目,您可以将 project.clj 中的 :java-source-pat ..
发布时间:2022-01-02 22:34:02 Java开发

从java调用clojure

大多数关于“从 Java 调用 clojure"的谷歌热门搜索已经过时,建议使用 clojure.lang.RT 来编译源代码.假设您已经从 Clojure 项目构建了一个 jar 并将其包含在类路径中,您能否帮助清楚地解释如何从 Java 调用 Clojure? 解决方案 更新:自从发布此答案后,一些可用工具发生了变化.在原始答案之后,有一个更新,包括有关如何使用当前工具构建示例的信息. ..
发布时间:2021-11-25 13:06:03 Java开发

如何在Android上调用Clojure?

TL; DR:我无法在Android中调用Clojure方法.我收到错误消息,我不确定为什么. 我正在为学校项目构建一个Android应用程序.我已经学习了Clojure,并且希望将其用于我的应用程序的某些部分.(我不是的目的是要用Clojure编写整个程序,只是几个库.) 我已经能够将Clojure程序编译为 .jar 并从笔记本电脑上运行的Java调用它,但我什至无法在Androi ..
发布时间:2021-04-22 19:30:10 移动开发

在Java类中定义的clojure访问枚举

我正在尝试使用 argon-jvm 库在我的应用程序中进行哈希处理。 默认情况下,该库使用 Argon2i ,但是,我想使用 Argon2id 。为此,我需要将枚举值 Argon2Factory.Argon2Types.Argon2id 传递给 create 方法中重载的 Argon2Factory 类。 ..
发布时间:2020-10-02 21:17:09 其他开发

从Java调用clojure(Clojure Interop)

从Clojoure调用Java非常简单明了,但事实证明反向是不可预测的。 他们似乎有两种方式: 1)以下课程 i)import clojure.java.api.Clojure; , ii)import clojure.lang.IFn; 2)将你的clojure编译成uberjar,然后将其导入java 代码。 / p> 我选择了第二个 ..
发布时间:2019-01-08 13:43:55 Java开发

奇怪的aget优化行为

关于 aget性能的问题的后续跟进 似乎有一些非常奇怪的优化进行。我们知道以下是真实的: => (def xa(int-array(range 100000))) #'user / xa => (set!* warn-on-reflection * true) true => (时间(reduce +(for [x xa](aget ^ ints xa x)))) ..
发布时间:2016-11-27 21:15:33 其他开发语言

Clojure的懒惰如何与Java / impure代码的调用交互?

Clojure评估不纯的代码(或调用Java) 似乎副作用+延迟序列可能导致奇怪的行为。 这是我们知道的导致这个问题: Clojure有延迟序列: user => (取5(范围)); (范围)返回无限列表 (0 1 2 3 4) user => (def value(println 5)) 5; 5打印输出到屏幕 user => value ..