字段访问器作为clojure中的函数?

Cri*_*cia 3 clojure clojure-java-interop

有没有办法将字段访问器转换为函数?当我试图这样做时,我真的很惊讶

(map .x [o1 o2])
Run Code Online (Sandbox Code Playgroud)

但反而必须这样做

(defn x [o] (.x o))
(map x [o1 o2])
Run Code Online (Sandbox Code Playgroud)

这似乎是不必要的.有没有办法为你创建这个功能?

Kyl*_*yle 7

使用匿名 fn

(map #(.x %) [o1 o2])
(map (fn [o] (.x o)) [o1 o2])
Run Code Online (Sandbox Code Playgroud)

或者memfn - 我读过匿名者fn比这更受欢迎.我会试着找到这篇文章.

(map (memfn x) [o1 o2])
Run Code Online (Sandbox Code Playgroud)

编辑:Stu Halloway有这个memfn