类似于 CLJS-2113,但针对 {{aget}}
Clojure
用户=> (aget (to-array [nil 1]) -1) ArrayIndexOutOfBoundsException -1 clojure.lang.RT.aget (RT.java:2336) 用户=> (aget (to-array [nil 1]) 0) nil 用户=> (aget (to-array [nil 1]) 0.5) nil 用户=> (aget (to-array [nil 1]) 1) 1 用户=> (aget (to-array [nil 1]) 1.5) 1 用户=> (aget (to-array [nil 1]) 2) ArrayIndexOutOfBoundsException 2 clojure.lang.RT.aget (RT.java:2336)
ClojureScript
cljs.user=> (aget (to-array [nil 1]) -1) nil cljs.user=> (aget (to-array [nil 1]) 0) nil cljs.user=> (aget (to-array [nil 1]) 0.5) nil cljs.user=> (aget (to-array [nil 1]) 1) 1 cljs.user=> (aget (to-array [nil 1]) 1.5) nil cljs.user=> (aget (to-array [nil 1]) 2) nil
请注意,Clojure 在行为上类似于将索引向下取整到最接近的整数,而 ClojureScript 则不是这样做的。
(aget (to-array [1 2]) 0.5)
在 Clojure 中产生 {{1}},在 ClojureScript 中产生 {{nil}}。
(假设对于 {{aset}} 也可能得到类似的结果。)