我在Clojure中有记录
(defrecord Animal [name age])
我可以轻松创建记录的实例
(def my-cat (Animal. "spot" 2))
我还可以使用map-> Animal函数
创建一个实例(def my-dog (map->Animal {:name "snowy" :age 6 :legs 3}))
创建
#user.Animal{:name "snowy", :age 6, :legs 3}
仅提供Animal
的实例,例如my-dog
,我如何获得基础?
我知道我可以在Animal
上进行静态调用以获得它,就像这样:
(Animal/getBasis)
提供[name age]
,但如何从my-dog
获取此内容?
答案 0 :(得分:2)
问题似乎在于clojure对静态方法调用的处理。这里有一些代码可以得到你的答案
user=> (defrecord Animal [name age])
user.Animal
user=> (def my-dog (map->Animal {:name "snowy" :age 6 :legs 3}))
#'user/my-dog
user=> (. (. (type my-dog) getMethod "getBasis" nil) invoke nil nil)
[name age]
进行了较长时间的讨论