13 clojure
如何获取现有的大型Java项目并开始添加Clojure模块?例如,在下面的代码中,我想在Java中提供以下函数:state?,zip?,state-list,zipcode-list.两个谓词将返回一个布尔值,但"getters"将返回数组.
(def *states* (list "NJ" "NY" "CA"))
(def *zipcodes* (list 12345 54343 98765))
(defn member [x sq]
(if (seq sq)
(if (= x (first sq))
sq
(recur x (rest sq)))))
(defn state? [aState]
(not (= (member aState *states*) nil)))
(defn zip? [aZip]
(not (= (member aZip *zipcodes*) nil)))
(defn state-list []
*states*)
(defn zipcode-list []
*zipcodes*)
;; ---------------
(state? "AA")
(state? "CA")
(zip? 11111)
(zip? 12345)
Art*_*ldt 11
我将使用leininge n 编译它然后将jar文件作为构建dep添加到我的java项目中.这是一个关于使用leiningen 的精彩视频.然后你可以直接从java调用它.Leiningen有一个uberjar选项,可以使用clojure和你所有的clojure依赖项,因此你只需要担心一个文件.我喜欢这个,因为它的工作量较少.
一个更友好的java方法是添加一个ant任务来与java项目一起构建它只需要更多的工作
对于需要返回正确的Java数组调用的函数to-array对他们
与许多顶级"从java调用clojure"相反,你不应该调用clojure运行时RT.
PS:我最喜欢的标语行"我想使用一个名为clojure的java库"我问Rich他说这很酷;)
| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |