gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:12:11 26 4
gpt4 key购买 nike

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

(.methCall obj args)

但是有没有一种方法可以在没有点符号的情况下调用该方法?例如。当我转动时相当于“应用”

(f x y) 

进入

(apply f x y)

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

最佳答案

dot special form

例如

user=> (. (bigint 42) toString)
"42"

您使用的表格位于member access下并且是一个快捷方式:

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)

关于clojure - 在 Clojure 中,如何在不使用特殊点符号的情况下调用对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64123664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com