clojure中的函数定义

时间:2016-03-15 04:41:46

标签: clojure

任何人都可以解释我这个clojure的功能定义行

 (defn insert [{:keys [el left right] :as tree} value] 
      (**something**))

2 个答案:

答案 0 :(得分:3)

插入函数正在使用地图的解构,从键中检索值。我认为以下内容会更清楚:

(defn insert [{:keys [el left right] :as tree} value]
      (println (str el " " left " " right))
      (println "-")
      (println tree)
      (println "-")
      (println value)   )


(def mytree  {:el "el" :left "left" :right "right"})

(insert mytree 3)

答案 1 :(得分:2)

这是Clojure中的论证解构。您可以在此处详细了解:https://gist.github.com/john2x/e1dca953548bfdfb9844

{:keys [el left right]}假定第一个参数(我们称之为arg)是一个地图,将(:el arg)绑定到el(:left arg)绑定到{{1对于函数的范围,我需要left(:right arg)

right{:keys [.. .. ..]} :as tree}绑定到arg

然后tree正常处理,没有任何解构。