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

欢迎!请参阅关于页面以获取更多有关此网站的工作方式的信息。

+4
Clojure

当编写需要进行谓词分派的代码(如代码分析库)时,需要一个类似于.invoke的模式的函数是相当常见的

`
(defn classify [x]
(condp invoke x

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

`

这肯定可以用invoke表达,但.condp invoke模式读起来很顺畅。

此外,.code>在有一个函数和值的滑动窗口情况下也很有用,例如

(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}}不能用于这些情况,因为它需要提供参数。

欢迎来到Clojure问答,在这里您可以提出问题并从Clojure社区成员那里获得答案。
...