由 jszakmeister 发表的评论
在这里提供具体的案例很困难——它似乎只有在高级编译中才会真正出现。我有一个从服务器返回的常规操作,类似于这个:{"Br": 0, "B": 100, "P": 1000} 作为 JSON。js->clj 会导致在描述中提到的 "没有协议方法" 错误。我发现,如果我移动这个片段:
`
(identical? (type x) js/Object)
(into {} (for [k (js-keys x)]
[(keyfn k) (thisfn (unchecked-get x k))]))
`
在前面这个片段之前
(coll? x) (into (empty x) (map thisfn x))
错误消失了——但我不知道这是否是正确的做法。我怀疑键 somehow 再次与前知事项发生冲突,某事物不是集合却被当作集合处理。然后,当调用 (empty x) 时,由于对象未实现所需协议,我们失败了。
我以为这种情况已经被 CLJS-1658 和 7e15b1f2b894d93ef94ff86d75226f1fd3919580 解决了,但也许我们又遇到了假阳性。