2024 Clojure状态调查!中分享您的想法。

欢迎!有关如何使用本站的一些更多信息,请参阅关于页面。

0
ClojureScript

clojure/core.rrb-vector 在 clojurescript 中实现了 MapEntry 协议,这可能导致将其传递给 (vec ...) 时出现不正确的结果(它检查输入是否为 MapEntry 作为其第一个情况)。

(vec (range 10))
[0 1 2 3 4 5 6 7 8 9]

>(rrb/vec (range 10))
[0 1 2 3 4 5 6 7 8 9]

(vec (rrb/vec (range 10)))
[0 1] <------- !!!!!!!!!

(seq (rrb/vec (range 10)))
(0 1 2 3 4 5 6 7 8 9)

(map-entry? (rrb/vec (range 10)))
true <------- !!!!!!!!

(map-entry? (vec (range 10)))
false

1 个答案

+1

我可以确认我也在使用 core.rrb-vector 库的 ClojureScript 版本时看到这种行为。我最近对那个库做了一些错误修复,但并没有注意到这一点。库的原始作者添加了 IMapEntry 协议的实现,但我不了解为什么。我会进一步调查。感谢您的报告。

...