在Clojure中,如何在不使用特殊点符号的情况下对对象调用方法?

在Clojure中,如何在不使用特殊点符号的情况下对对象调用方法?,clojure,macros,Clojure,Macros,在Clojure中,我总是使用。符号,即 (.methCall obj args) 但是,有没有一种方法可以在不使用点符号的情况下调用该方法?这相当于我转身时的“应用” (f x y) 进入 ? 我想这样做是为了编写一个宏,它可以将方法名作为参数之一,并在对象上调用它。这里有 例如 您正在使用的表单位于下面,是一个快捷方式: user=> (macroexpand '(.toString (bigint 42))) (. (bigint 42) toString) 上述文件说明了以

在Clojure中,我总是使用。符号,即

(.methCall obj args)
但是,有没有一种方法可以在不使用点符号的情况下调用该方法?这相当于我转身时的“应用”

(f x y) 
进入

?

我想这样做是为了编写一个宏,它可以将方法名作为参数之一,并在对象上调用它。

这里有

例如

您正在使用的表单位于下面,是一个快捷方式:

user=> (macroexpand '(.toString (bigint 42)))
(. (bigint 42) toString)
上述文件说明了以下扩展:

user=> (. (bigint 42) toString)
"42"
user=> (macroexpand '(.toString (bigint 42)))
(. (bigint 42) toString)
(.instanceMember instance args*) ==> (. instance instanceMember args*)
(.instanceMember Classname args*) ==> (. (identity Classname) instanceMember args*)
(.-instanceField instance) ==> (. instance -instanceField)
(Classname/staticMethod args*) ==> (. Classname staticMethod args*)
Classname/staticField ==> (. Classname staticField)