aset不会在clojurescript中链接

zca*_*ate 2 clojure clojurescript

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

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

(aget data "a") ;=> "a"
(aget data "b") ;=> 'returns nothing'
Run Code Online (Sandbox Code Playgroud)

(-> 1 inc dec) ;=> returns 1, which is fine
Run Code Online (Sandbox Code Playgroud)

ama*_*loy 6

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

(doto data
      (aset "a" "a")
      (aset "b" "b"))
Run Code Online (Sandbox Code Playgroud)


Ank*_*kur 5

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