我想了解我在Clojure中注意到的一些行爲。Clojure讓允許多個具有相同名稱的綁定
它可以創建一個讓具有相同綁定名稱結合重複多次:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
我明白,讓綁定進行評估,而這一切主要是有道理的。
我對文檔的理解是:「用let創建的本地變量不是變量,一旦創建,它們的值永遠不會改變!」
上述語法實際上是否改變了綁定的值?
這感覺就像應該引發一個錯誤。
作爲一種附帶說明的:
有趣的是,你可以輸出上面的JS與clojurescript:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
在這裏我們可以看到,值都是實際不同的變量,它指向什麼正在發生,但一些澄清將是非常有幫助的。