我有以下Clojure代码
(defn myFunction [{:keys [a b c] :as myAtom}]
(let [new-a 1]
(+ new-a a)
(assoc myAtom :a new-a)))
我想知道如何:键和:作为工作
答案 0 :(得分:1)
第一行定义了一个函数(在var中),它接受一个必须是map的参数
(defn myFunction [{:keys [a b c] :as myAtom}]
然后它创建一个let语句,将给定的符号a
b
c
绑定到通过查找每个符号作为该参数中的关键字而获得的值,并绑定名称myatom到原始地图
(let [new-a 1]
然后将new-a
绑定到值1
(+ new-a a)
做一些数学并忽略结果
(assoc myAtom :a new-a)))
这最后一段使用绑定到整个地图的符号(作为参数传递)作为并调用assoc来创建一个新地图,该地图将a与new-a中的值相关联。然后将其重新作为函数的值。
这将返回一个值为1的新地图:a
user> (myFunction {:a 3 :b 3 :c 3})
{:a 1, :c 3, :b 3}