【问题标题】:Calling Clojure higher-order functions调用 Clojure 高阶函数
【发布时间】:2011-05-15 13:49:23
【问题描述】:

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

(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

#&lt;user$add_n$fn__33 user$add_n$fn__33@e9ac0f5&gt; 是对生成函数的内部引用。

【问题讨论】:

    标签: clojure higher-order-functions


    【解决方案1】:

    简单:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多