3
我是Clojure的新手,並創建了一個簡單的宏來調用某個Java類的某些方法,並將結果返回到Clojure地圖,並且這一切都正常。 (另外我知道bean
函數,但我使用的類不是bean)。Java類到Clojure的地圖
我的問題是關於調用代碼。將Java'方法'作爲符號傳遞是更好的形式嗎?
我甚至不確定.toString
是什麼類型(在調用代碼中)?這一切都有效,但不知道它的慣用Clojure。
(defmacro obj-to-map
[obj & body]
(let [afn (fn [[method kw]]
`(~kw (~method ~obj)))]
`(assoc {} [email protected](mapcat afn (partition 2 body)))))
(obj-to-map "hello" .length :length .toString :value)
=> {:value "hello", :length 5}
也許https://github.com/ngrunwald/gavagai也會有幫助。 – georgek
是啊,看到這個項目,但它可能矯枉過正,我需要什麼。它也有趣,有時候爲自己工作這些事情! – tgrrr