标签: clojure-java-interop

无法动态绑定非动态var:user/*out*

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

(defn print-logger
  [writer]
   #(binding [*out* writer]
      (println %)))

(def *out*-logger (print-logger *out*))

(*out*-logger "hello")
Run Code Online (Sandbox Code Playgroud)

将导致:`无法动态绑定非动态var:user/out

我对Clojure很新,并且不明白为什么会发生这种情况,尤其是当我关注这个例子时:)

clojure clojure-java-interop

1
推荐指数
1
解决办法
367
查看次数

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

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

(def byte-arr (byte-array (map byte "This is a test"))) ; => #<byte[] [B@63465272>
Run Code Online (Sandbox Code Playgroud)

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

overriding clojure clojure-java-interop

1
推荐指数
1
解决办法
363
查看次数

java.lang.String无法强制转换为clojure.lang.IFn

我正在尝试将一些数据添加到app引擎数据存储区中.这是我的功能

(defn createUser [email phone roleId status]
  (println (db/isIdExist "users" "email" email))
  (if (db/isIdExist "users" "email" email) 
    (str "false")
    ((db/addUser email phone roleId status) (str "true"))))
Run Code Online (Sandbox Code Playgroud)

在这里我想根据isIdExist函数的值打印false (如果电子邮件已经存在,则返回true,否则为false)现在当我运行它时,如果isIdExist == true那时它打印为false但是当isIdExist == false它在数据存储区中添加值但是给出了这个错误.有人可以帮助为什么会发生这种情况,我在这里错过了什么概念?谢谢

clojure compojure clojure-java-interop clojurescript

1
推荐指数
1
解决办法
1046
查看次数

在 Java 接口上调用 .class 时将 .class 传递给 Clojure 函数

我需要将 Java 接口的 .class 传递给 Clojure 中的函数调用。

调用 (class ) 需要对象的实例,因为我想要静态类名。

基本上所以我可以java互操作和使用: keysetHandle.getPrimitive(Aead.class);

Java Source 方法调用

调用 .class 的接口

传递 Aead 但 Aead 只是一个接口想要它像这样但无法解决如何在 Clojure 中获得等效的 Aead.class?

(.getPrimitive 键集句柄 Aead.class)

java clojure clojure-java-interop

1
推荐指数
1
解决办法
288
查看次数

如何在 Clojure 的 Java 类中引用 Enum

如何从 Clojure 引用包含在 Java 类中的 Enum 常量?我正在尝试使用P2PKH来自org.bitcoinj.script.Script.ScriptType. 见bitcoinj的API

Java 互操作指南中,他们说:

您可以像这样引用 Clojure 中的枚举:

星期几/星期二

但是当 Enum 包含在一个类中时,这不起作用。什么是正确的语法?

enums clojure clojure-java-interop

1
推荐指数
1
解决办法
258
查看次数

从 Java 调用 Clojure:为什么“新”风格(clojure.java.api.Clojure)比“旧”风格(gen-class)更好?

在阅读了相关问题这个很好的答案后,有些事情让我感到困惑:

有两种可能性可以与 Java 开发人员共享我在 Clojure 中编写的函数

  • 第一个是在 JAR 文件中提供它,以便他们可以像我用 Java 编写它一样调用它。听起来很适合 Clojure 倡导。

  • 第二种,据称是更好的方法,要求那些 Java 开发人员使用诸如clojure.lang.IFnor 之类的东西,clojure.lang.RT并通过将它们的名称作为字符串 (!) 传递而不是仅仅调用它们来调用函数。

为什么第二种方法“更好”?

clojure clojure-java-interop

1
推荐指数
1
解决办法
181
查看次数

如何迭代clojure中的地图列表并将其连接到字符串

我有一个带有两个键的地图列表:path和:size

 listOfMaps ({:path "a " :size "1 "}{{:path "b " :size " 2"}...)
Run Code Online (Sandbox Code Playgroud)

如何迭代它并将其路径和大小连接到一个字符串,以便它介于两者之间

那是

 str "initial" "a" "1" "b" "2" .... "end" 
Run Code Online (Sandbox Code Playgroud)

即通过循环填充的路径和大小应该在字符串"initial"和"end"之间

clojure clojure-java-interop

0
推荐指数
1
解决办法
380
查看次数

如何将环境变量附加到 java clojure cli?

我有通过 clojure 创建的文件

frontendapp.jar
backendapp.jar 
Run Code Online (Sandbox Code Playgroud)

并取一个环境变量, APP_PORT

我想了解的是如何将变量传递给 jar 文件,以便它们与变量 APP_PORT 一起运行?

我的假设是这样的

java -jar frontenapp.jar APP_PORT=8080 
Run Code Online (Sandbox Code Playgroud)

我的假设正确吗?

如果问题不好,我很抱歉,这是我第一次部署 clojure 应用程序

java clojure clojure-contrib clojure-java-interop clojurescript

0
推荐指数
1
解决办法
175
查看次数