【问题标题】:Named parameters in anonymous Clojure functions?匿名 Clojure 函数中的命名参数?
【发布时间】:2020-01-03 11:28:37
【问题描述】:

我正在学习 Clojure 中的闭包,但这个函数让我很困惑:

(defn inc-maker
  "Create a custom incrementor"
  [inc-by]
  #(+ % inc-by))

(def inc3 (inc-maker 3))

(inc3 7)
; => 10

作为一名 JavaScript 开发人员,我无法弄清楚参数 7 是如何传入的,因为在 Javascript 中你必须这样写:

const incMaker = incByX => incByY => incByX + incByY;

const incThree = incMaker(3);

incThree(7);

所以我的问题是,并不是我想将 Clojure 转换为 Javascript,而是有没有办法在匿名 Clojure 函数中命名参数?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    关于如何声明匿名函数,您可以更详细一点。

    #(+ % inc-by)
    

    实际上扩展为等价形式,例如

    (fn [n] (+ n inc-by))
    

    如果你使用%1%2等,扩展的函数会有更多的参数。

    You can find some example on this documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多