2012-06-01 28 views
2

我发现clojurescript结果whon ASET被链接:在ASET未链在clojurescript

(def data (js-obj)) 
(-> data 
    (aset "a" "a") 
    (aset "b" "b")) 

(aget data "a") ;=> "a" 
(aget data "b") ;=> 'returns nothing' 

(-> 1 inc dec) ;=> returns 1, which is fine 

回答

6

Ankur是正确的,为什么会发生这种情况;以“解决”,你应该使用更多的语义描述:

(doto data 
     (aset "a" "a") 
     (aset "b" "b")) 
5

aset返回所插入的元件,而不是阵列对象本身,因此“b”的情况下data没有通过以前的“a”呼叫连接到它。

+0

是啊...我并没有考虑正确=)我今天早上我应该用多托的链接实现。 – zcaudate