我正在关注“Clojure in Action”,对此我感到困惑:
(defn with-log [function-to-call log-statement ]
(fn [& args]
(println log-statement)
(apply function-to-call args)))
这是让我感到困惑的代码段。到目前为止,这是我能破译的:
(defn with-log [function-to-call log-statement ] ..) 定义了一个名为“with-log”的函数,它接受参数“function-to-call”和“log-statement”以及function-to- call 是作为参数传递给此函数的函数。下一部分让我感到困惑:(fn [& args] .... 这里定义了一个匿名函数吗?'with-log' 函数是否返回一个新的函数定义?
(fn [& args]
(println log-statement)
(apply function-to-call args))
因此,通过调用 (with-log somefunc "my label") - 它只是返回一个新的匿名函数吗?还是调用匿名函数?