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
0

评论者:rickmoynihan

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

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

{{apply}} 这些情况下无法使用,因为它需要提供参数。

欢迎来到 Clojure Q&A,您可以在这里提出问题并获得 Clojure 社区成员的解答。
...