1

哪种形式更好?

(defn my-func [arg arg2]
 (fn [] [:div (str arg arg2)]))

还是这个?

(defn my-func []
 (fn [arg arg2] [:div (str arg arg2)]))

我是用手机写的,所以请原谅我的缩进...

4

2 回答 2

1

除了arity之外,这些功能之间还有其他区别。

第一个函数将在第一次渲染时关闭arg,并arg2为每个后续重新渲染使用这些参数。例如

(def a 1)
(def b 2)
[my-func a b]

将始终导致[:div '12']是否或是否ab更改

第二个函数将在每次渲染时使用arg, 并在参数更改时更新结果。arg2

试剂文档中查找Rookie 错误

于 2019-10-22T20:40:41.120 回答
0

我相信你的问题应该是哪个是正确的(第一个是正确的)。第二个有一个arity异常。根据您的用例,我更愿意定义和调用匿名函数以获得结果。考虑这个第一编辑:

(defn my-func [arg arg2]
  ((fn [] [:div (str arg arg2)])))
于 2019-10-22T13:34:11.570 回答