【发布时间】:2015-11-28 14:05:12
【问题描述】:
我正在使用映射来存储函数调用(在 ClojureScript 中,但在 Clojure 中应该相同):
(def parse-fn {:json js/JSON.parse
:edn read-string
:transit t->clj})
然后我有一个transform 函数,如下所示:
(defn transform [format data]
((get parse-fn format) data))
像这样调用transform:(transform :transit data) 效果很好。我只担心transform 函数的可读性。第一件事是一个函数并不是很明显。
编辑:我不能只调用(:transit parse-fn),因为format 来自另一个函数,例如:(another-fn [... format ...] ... (transform format data))
是否有明确的call 函数,或者这段代码的结构不是惯用的?
【问题讨论】:
-
我发现它实际上非常可读。 “给我获取传输的解析函数,然后用数据调用它”。 double
((并不常见,所以读者实际上会在这里花点时间。 -
考虑使用multimethods 来调度关键字而不是存储要调用的函数的地图。
标签: clojure clojurescript idioms