1
我正在通過Joy of Clojure中的解構示例進行工作,並且我通過一個令我感到驚訝的示例拍攝。這兩個產生相同的輸出:從右到左的裝訂順序
(let [range-vec (vec (range 10)) [a b c & more :as all] range-vec]
(println "a b c: " a b c)
(println "more: " more)
(println "all: " all))
(let [range-vec (vec (range 10))]
(let [[a b c & more :as all] range-vec]
(println "a b c: " a b c)
(println "more: " more)
(println "all: " all)))
現在開始的第一種形式反駁我的直覺,因爲,以爲約束力和優先從左至右發生,該範圍-VEC不會被分配給「所有」之前定義。我是第二種形式,range-vec已經被定義,然後在第二個let語句中被分配給所有人,這似乎遵循我迄今所知的規則。我什麼時候知道符號何時被綁定以及發生的順序?
我是新來的lisps,所以我不是帶'let *'的家庭。所以綁定從左到右,而不是從左到右? – 2013-04-10 20:39:10
是的,綁定從左到右。所以你的兩個版本是相同的。 – Barmar 2013-04-10 20:40:31
謝謝,明白了! – 2013-04-10 20:49:27