问题标签 [clojure-java-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
412 浏览

clojure - 将 java 实例正确绑定到 Vars 的 clojure

我将一个实例绑定到一个 Var:

错误:

我正在预定义 Var

甚至尝试过

无法理解该消息的预期内容。

然而,使用 let 代替绑定在词法范围内有效。不过想实现动态绑定。

0 投票
1 回答
425 浏览

clojure - 不能动态绑定非动态变量:user/*out*

我目前正在阅读 Clojure Programming 一书,并按照示例进行操作。但是我遇到了一个错误。

会导致:`Can't dynamic bind non-dynamic var: user/ out

我对 Clojure 很陌生,不明白为什么会发生这种情况,尤其是当我按照示例进行操作时:)

0 投票
1 回答
198 浏览

clojure - 有bit-get功能吗?

这是我想要的行为:

我知道这可以很容易地使用bit-test,即:

但我很好奇那里是否已经有任何东西。0这对我来说可能有点小气,但是必须测试某物是否是or 1,然后根据该测试返回它是否是0or ,这似乎不是最理想的(尽管如此) 。1所以,我也很高兴听到这里有什么方法可以去掉中间人,不管bit-get在 Clojure 或 Java 世界中是否有任何以前制作的函数。或者也许我一开始就弄错了,关于编译或运行时优化的一些事情让我bit-get上面的函数实际上不必运行测试只是为了返回它正在测试的值?或者 - 看到我对按位运算符中涉及的时序/速度优化几乎一无所知 - 也许它似乎只是次优,但实际上是出于某种原因最快的方法?

0 投票
1 回答
597 浏览

clojure - 我可以在 Clojure 中对 Java 方法调用进行部分处理吗?

我有一个对象的方法。

我可以在 Clojure 中调用它

我也可以使用来自词汇环境的信息来调用它

我可以用部分来做到这一点吗?例如

这给了我一个

java.lang.RuntimeException:无法解析符号:.myMethod 在此上下文中

我目前正在使用匿名函数进行这项工作

但是如果在这种情况下使用部分会很好。是否可以?

我确信答案将与绑定和调度有关,但我还不知道在编译和执行期间调度发生在哪里。

0 投票
3 回答
382 浏览

clojure - 是否可以在 Clojure 中为类型化的 Java-Array 覆盖 .toString?

我有一个像这样的字节数组:

打电话时.toString我得到[B@1b96107b. 在这种情况下,是否可以覆盖.toStringclojure 类型的 -Method[B来获取This is a test

0 投票
1 回答
214 浏览

java - NoClassDefFoundError 从 Java (Android, LibGDX) 调用 Clojure

我已经按照本教程使用 Leiningen 在 Eclipse 中从 Java 调用 Clojure。我想在 Clojure 中编写我游戏的 AI 代码,然后在 Android OS 的 LibGDX 中完成其余的工作。

完成 Clojure 端后,我使用lein命令将其打包到 jar 文件中(#lein compile、#lein run、#lein uberjar)。

我通过右键单击 project > Properties > Java Build Path > Libraries > Add External JARs... > myai-0.1.0-SNAPSHOT-standalone.jar 添加 jar 文件

我的问题是在我执行游戏时出现的。

我收到此错误:

我真的不知道为什么会这样,因为我已按照教程中的所有步骤进行操作。

这些是我的 clojure 文件:

项目.clj

核心.clj

提前致谢!:)

编辑:它在带有命令行命令的 Ubuntu 中也不起作用。

0 投票
2 回答
4141 浏览

clojure - 如何从 Clojure 中的标准输入读取所有行

我正在 Clojure 中编写一个Brainf***解释器。我想通过一个程序来使用标准输入。但是,我仍然需要稍后从标准输入读取用户输入。

目前,我正在这样做:

我的 Clojure 代码只读取第一行,使用read-line

如何读取我输入的文件中的所有行?*in*似乎是 的一个实例java.io.Reader,但它只提供.read(一个字符)、.readLine(一行)和read(char[] cbuf, int off, int len)(似乎非常低级)。

0 投票
1 回答
672 浏览

clojure - 将本地 Java 类导入 Clojure

我了解在 clojure 中导入 Java 类的一般想法,如下所示:

但是,假设我有一个文件 Example.java,其中包含我想使用的“示例”类,如何导入这样的东西?

抱歉,如果已经回答了这个相当愚蠢的问题,我一直在环顾四周,但在发布之前一无所获,并提前感谢任何可以阐明的人。

0 投票
1 回答
242 浏览

clojure - 如何在 Clojure 中的传入类指针上调用静态方法?

我想在 Clojure 中获得有界原语的位大小。这些可以找到

或同等的,不那么甜

(我在这些示例中使用 java.lang.*-names 只是为了清楚起见,它们可以省略)

当然我想参数化调用,比如

Java 中有界原语的数量是有限的,这使得这个练习有点学术,但问题是:

我如何(动态地)调用作为 var 给出的类中的静态方法?

0 投票
1 回答
2586 浏览

clojure - Clojure 用重载方法具体化 Java 接口

我正在尝试在 Clojure 中实现以下 Java 接口:

以下 Clojure 代码是我这样做的尝试:

这无法编译并出现错误:

java.lang.IllegalArgumentException:无法定义不在接口中的方法:创建

文档建议重载接口方法是可以的,只要在这种情况下arity不同:

如果一个方法在协议/接口中被重载,则必须提供多个独立的方法定义。如果在接口中以相同的数量重载,则必须指定完整的提示以消除歧义-缺少提示意味着 Object.

我怎样才能得到这个工作?