请在2024 Clojure状态调查中分享您的想法!

欢迎!有关本站的更多信息,请参阅关于页面。

+4
Clojure

在编写需要进行谓词分派(如代码分析库)的代码时,使用看起来是这样的模式对invoke函数非常普遍:

`
(defn classify [x]
(condp invoke x

string? (string-f x ..)
number? (number-f x ..)
..))

`

这完全可以不用invoke来实现,但是condp invoke模式读起来更加清晰。

此外,invoke在有滑动窗口函数和值的情况下也很有用,例如

(apply map invoke funs vals)

补丁: 0001-CLJ-2342-add-invoke.patch

2 答案

+1
参考资料:https://clojure.atlassian.net/browse/CLJ-2342(由bronsa报告)
0

评论者:rickmoynihan

此用例还包括当你已经部分应用了函数的所有参数并想要调用它。

{{(map (comp :result invoke) fns)}}

{{apply}}不能用于这些情况,因为它需要提供参数。

...