问题标签 [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.
clojure - 将 java 实例正确绑定到 Vars 的 clojure
我将一个实例绑定到一个 Var:
错误:
我正在预定义 Var
甚至尝试过
无法理解该消息的预期内容。
然而,使用 let 代替绑定在词法范围内有效。不过想实现动态绑定。
clojure - 不能动态绑定非动态变量:user/*out*
我目前正在阅读 Clojure Programming 一书,并按照示例进行操作。但是我遇到了一个错误。
会导致:`Can't dynamic bind non-dynamic var: user/ out
我对 Clojure 很陌生,不明白为什么会发生这种情况,尤其是当我按照示例进行操作时:)
clojure - 有bit-get功能吗?
这是我想要的行为:
我知道这可以很容易地使用bit-test
,即:
但我很好奇那里是否已经有任何东西。0
这对我来说可能有点小气,但是必须测试某物是否是or 1
,然后根据该测试返回它是否是0
or ,这似乎不是最理想的(尽管如此) 。1
所以,我也很高兴听到这里有什么方法可以去掉中间人,不管bit-get
在 Clojure 或 Java 世界中是否有任何以前制作的函数。或者也许我一开始就弄错了,关于编译或运行时优化的一些事情让我bit-get
上面的函数实际上不必运行测试只是为了返回它正在测试的值?或者 - 看到我对按位运算符中涉及的时序/速度优化几乎一无所知 - 也许它似乎只是次优,但实际上是出于某种原因最快的方法?
clojure - 我可以在 Clojure 中对 Java 方法调用进行部分处理吗?
我有一个对象的方法。
我可以在 Clojure 中调用它
我也可以使用来自词汇环境的信息来调用它
我可以用部分来做到这一点吗?例如
这给了我一个
java.lang.RuntimeException:无法解析符号:.myMethod 在此上下文中
我目前正在使用匿名函数进行这项工作
但是如果在这种情况下使用部分会很好。是否可以?
我确信答案将与绑定和调度有关,但我还不知道在编译和执行期间调度发生在哪里。
clojure - 是否可以在 Clojure 中为类型化的 Java-Array 覆盖 .toString?
我有一个像这样的字节数组:
打电话时.toString
我得到[B@1b96107b
. 在这种情况下,是否可以覆盖.toString
clojure 类型的 -Method[B
来获取This is a test
?
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 中也不起作用。
clojure - 如何从 Clojure 中的标准输入读取所有行
我正在 Clojure 中编写一个Brainf***解释器。我想通过一个程序来使用标准输入。但是,我仍然需要稍后从标准输入读取用户输入。
目前,我正在这样做:
我的 Clojure 代码只读取第一行,使用read-line
:
如何读取我输入的文件中的所有行?*in*
似乎是 的一个实例java.io.Reader
,但它只提供.read
(一个字符)、.readLine
(一行)和read(char[] cbuf, int off, int len)
(似乎非常低级)。
clojure - 将本地 Java 类导入 Clojure
我了解在 clojure 中导入 Java 类的一般想法,如下所示:
但是,假设我有一个文件 Example.java,其中包含我想使用的“示例”类,如何导入这样的东西?
抱歉,如果已经回答了这个相当愚蠢的问题,我一直在环顾四周,但在发布之前一无所获,并提前感谢任何可以阐明的人。
clojure - 如何在 Clojure 中的传入类指针上调用静态方法?
我想在 Clojure 中获得有界原语的位大小。这些可以找到
或同等的,不那么甜
(我在这些示例中使用 java.lang.*-names 只是为了清楚起见,它们可以省略)
当然我想参数化调用,比如
Java 中有界原语的数量是有限的,这使得这个练习有点学术,但问题是:
我如何(动态地)调用作为 var 给出的类中的静态方法?
clojure - Clojure 用重载方法具体化 Java 接口
我正在尝试在 Clojure 中实现以下 Java 接口:
以下 Clojure 代码是我这样做的尝试:
这无法编译并出现错误:
java.lang.IllegalArgumentException:无法定义不在接口中的方法:创建
文档建议重载接口方法是可以的,只要在这种情况下arity不同:
如果一个方法在协议/接口中被重载,则必须提供多个独立的方法定义。如果在接口中以相同的数量重载,则必须指定完整的提示以消除歧义-缺少提示意味着 Object.
我怎样才能得到这个工作?