任何人都可以解释我这个clojure的功能定义行
(defn insert [{:keys [el left right] :as tree} value]
(**something**))
答案 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
正常处理,没有任何解构。