7

如果我定义一个返回这样的函数的函数:

(defn add-n
  [n]
  (fn [x] (+ x n)))

然后我可以将结果分配给一个符号:

(def add-1 (add-n 1))

并称之为:

(add-1 41)
;=> 42

如何调用结果(add-n 1)而不将其分配给新符号?以下产生此输出:

(println (add-n 1))
#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>
nil

是对生成函数的#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>内部引用。

4

1 回答 1

16

简单的:

(println ((add-n 1) 41))

您看到的输出是一个函数定义。将它放在圆括号之间并添加一个参数就足以调用它。

于 2011-05-15T13:54:05.690 回答