我有以下 Clojure 代码
(defn myFunction [{:keys [a b c] :as myAtom}]
(let [new-a 1]
(+ new-a a)
(assoc myAtom :a new-a)))
我想知道 :keys 和 :as 是如何工作的
我有以下 Clojure 代码
(defn myFunction [{:keys [a b c] :as myAtom}]
(let [new-a 1]
(+ new-a a)
(assoc myAtom :a new-a)))
我想知道 :keys 和 :as 是如何工作的
第一行定义了一个函数(在 var 中),它接受一个参数,该参数必须是一个映射
(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 中的值相关联。然后将其作为函数的值返回。
这将为 :a 返回一个值为 1 的新映射
user> (myFunction {:a 3 :b 3 :c 3})
{:a 1, :c 3, :b 3}