【发布时间】:2014-06-19 21:33:25
【问题描述】:
我试图了解 let 绑定如何在地图方面以闭包方式工作。据我了解,let 后跟一个向量,其中第一项是我要绑定的符号,然后是我要绑定到的值。所以
(let [a 1 b 2] a)
将给出 1 的值。
所以如果我声明地图如
(def people {:firstName "John" :lastName "Doe"})
我想绑定键 firstName 那么这将是简单“Hello Person”的正确形式
(let [personName (:firstName people)] (str "hello " personName))
这可行,但是在 Clojure 网站 http://clojure.org/special_forms#binding-forms 上,它们显示了另一种形式,也可以使用
(let [{personName :firstName} people] (str "hello " personName))
两个代码 sn-ps 都可以工作,我理解为什么第一个版本可以工作,但我对第二个版本的语法感到困惑。这只是语法糖还是重复的工作方式,并且比另一种更惯用?
【问题讨论】:
-
请参阅您链接到的文档中的地图绑定解构部分。
-
您的地图中没有键
:name。 -
对不起,我把钥匙命名错了。
标签: clojure