aset不会在clojurescript中链接

时间:2012-06-01 09:17:27

标签: clojure clojurescript

我发现一个结果是clojurescript,因为aset是链接的:

(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

2 个答案:

答案 0 :(得分:6)

Ankur对于这种情况发生的原因是正确的;要“解决”它,你应该使用更具语义描述性的东西:

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

答案 1 :(得分:5)

aset返回插入的元素而不是数组对象本身,因此在“b”的情况下,data没有从之前的“a”调用到它的线程。