據我所知,let
關鍵字在本地將變量綁定到值(支持某種模式匹配)。它收到兩個參數。首先是帶有我們想要綁定的符號和我們想要綁定的值的向量。然後出現一個使用該值的表達式。破壞地圖(使用let關鍵字)
在這個例子中,第一個變量person
定義:
user=> (def person {:name "Jabba" :profession "Gangster"})
#'user/person
現在假設我們想用let
功能進行破壞地圖:
user=> (let [{name :name} person] (str "The person's name is " name))
"The person's name is Jabba"
爲什麼在[{name :name} person]
,:name
應該在變量name
之後出現?這實際上是行不通的:
user=> (let [{:name name} person] (str "The person's name is " name))
"The person's name is "
爲什麼是這樣的順序?我認爲,地圖可以以任一次序來定義:
user=> (def map1 {:a 1})
#'user/map1
user=> (def map2 {1 :a})
#'user/map2
可能重複(http://stackoverflow.com/questions/31220308/clojure-shortcuts-for-destructuring-maps) – schaueho
'map1'和'map2'遠不相同:在'map1'中,鍵是':a',而在後者中,關鍵是'1'。否則你的問題看起來像一個重複的https://stackoverflow.com/questions/31220308/clojure-shortcuts-for-destructuring-maps – schaueho