调用Clojure高阶函数

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>是对生成函数的内部引用。

1个回答

16

简单:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接