评论者:spinningtopsofdoom
这对于 has-set 宏和 hash-set 文本都适用。这是我从 repl 得到的
`
cljs.user=> (hash-set 1 '1 2 '2 3 '3 4 '4 5)
{1 2 3 4 5}
cljs.user=> (hash-set 1 '1 2 '2 3 '3 4 '4)
{1 1 2 2 3 3 4 4}
cljs.user=> #{ 1 '1 2 '2 3 '3 4 '4}
{2 1 4 4 3 2 1 3}
cljs.user=> #{ 1 '1 2 '2 3 '3 4 '4 5}
{2 1 4 4 3 2 5 1 3}
cljs.user=> #{ 1 '1 2 '2 3 '3 4 '4 5 '5}
{2 5 1 4 4 3 2 5 1 3}
cljs.user=> (apply hash-set [1 '1 2 '2 3 '3 4 '4])
{1 2 3 4}
`
作为函数调用 hash-set 可以得到正确的结果。当我们的元素多于 8 个时,hash-set 宏给出的结果是不正确的。它使用 PersistentHashSet 的 fromArray 方法来构建集合,而不是为集合创建一个字面值 PersistentArrayMap。无论元素有多少,字面表示法都是错误的。