【问题标题】:How to call the eval method of a Java class from Clojure?如何从 Clojure 调用 Java 类的 eval 方法?
【发布时间】:2013-02-18 01:31:27
【问题描述】:

如果某个 Java 类有一个名为“eval”的方法,我如何从 Clojure 调用它?

执行以下操作似乎是从 clojure.core 调用 eval 方法而不是 TestObject 的 eval:

(defn test[x] 
  (let [obj (new TestObject)] 
    (. obj eval x)))

【问题讨论】:

  • 这似乎不是真的 - 是什么让你这么认为?

标签: clojure clojure-java-interop


【解决方案1】:
(defn test[x] 
  (let [obj (new TestObject)] 
    (.eval obj x)))

编辑。然而这很奇怪。 Dot 特殊形式. 需要一个符号作为第二个参数,并且这个符号的名称被解释为类方法/字段的名称。所以 eval 在你的情况下不能被评估为 eval 函数。

【讨论】:

  • @EmreColak 是否消除了问题?
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 2016-10-19
  • 2020-03-16
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多