【发布时间】:2020-09-18 08:12:48
【问题描述】:
读完this great answer to a related question后有些让我困惑:
与 Java 开发人员共享我在 Clojure 中编写的函数有两种可能性
第一个是在 JAR 文件中提供它,以便他们可以调用它,就像我用 Java 编写的一样。听起来很适合 Clojure 宣传。
第二种方法,据称是更好的方法,要求那些 Java 开发人员使用诸如
clojure.lang.IFn或clojure.lang.RT之类的东西,并调用函数,而是将它们的名称作为字符串 (!) 传递只是打电话给他们。
为什么第二种方法“更好”?
【问题讨论】:
-
我认为你错了,再读一遍那个答案。
-
使用
tiny.binomial(5, 3)调用 -
@m0skit0: 调用
tiny.binomials(5, 3)是“旧方式”——这是我更喜欢的方式。 “新方式”是@alex-miller 在下面用IFn plus = Clojure.var("clojure.core", "+");等表达式进一步解释的方式 -
如果你想从字符串评估代码。你在哪里读到这种方式更好?
-
@m0skit0:也许我必须重新提出我的问题。简而言之:如果我在 Clojure 中编写一个函数,例如
(defn foo ...)我希望我的 Java 朋友能够将它导入并调用它,就好像它是用 Java 编写的一样;即x = foo()- 我确实不希望他们做类似RT.invoke("foo")的事情。我在哪里读到这种方式更好?看看 Alex Miller(顶级 Clojure 专家)怎么说:从 Clojure 1.6.0 开始,有一种新的首选方式来加载和调用 Clojure 函数。此方法现在比直接调用 RT 更受欢迎(并取代此处的许多其他答案)。
标签: clojure clojure-java-interop