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



在Clojure中,我总是使用。记法,即

(.methCall obj args)

但是,有没有一种方法可以在不使用点符号的情况下调用该方法?相当于";应用";当我打开时

(f x y) 

进入

(apply f x y)

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

有点特殊形式的

例如

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)

相关内容

最新更新