我该如何处理一个现有的大型Java项目并开始添加Clojure模块?例如,在下面的代码中,我想在Java中提供以下功能:state?,zip?,state-list,zipcode-list。这两个谓词将返回布尔值,但是“ getter”将返回数组。
(def *状态*(列表“ NJ”“ NY”“ CA”)
(def *邮政编码*(列表12345 54343 98765))
(defn成员[x sq]
(如果(seq sq)
(如果(= x(第一平方))
平方
(递归x(剩余平方))))
(defn状态?[aState]
(不是(=((成员aState * states *)nil)))
(defn zip?[aZip]
(不是(=((成员aZip *邮政编码*)无)))
(defn state-list []
*状态*)
(defn邮政编码列表[]
*邮政编码*)
;; ---------------
(状态?“ AA”)
(状态?“ CA”)
(邮编?11111)
(邮编?12345)
最佳答案
我将使用leininge n对其进行编译,然后将jar文件作为构建dep添加到我的Java项目中。这是使用leiningen的绝佳video。
那么您可以直接从Java调用它。 Leiningen有一个uberjar选项,可以扩展clojure和所有clojure依赖项,因此您只需要担心一个文件。我喜欢这个,因为它工作量少。
一种更友好的Java方法是添加一个ant任务以将其与Java项目一起构建,仅需要一点点工作
对于需要返回适当的Java数组的函数,请在其上调用to-array
与许多顶级“从Java调用clojure”命中相反,您无需调用clojure运行时RT。
PS:我最喜欢的标语“我想使用一个名为clojure的Java库”,我问Rich,他说这很酷;)
关于clojure - 将Clojure集成到现有Java项目中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2181601/