评论者: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))
错误已消失——但我并不确定这是否是正确的做法。我怀疑密钥再次与已知的事情发生冲突,并且某个东西在不是集合的情况下却被当作集合处理。然后,当调用(empty x)时,我们失败了,因为我们未能实现所需协议的对象。
我认为这种问题以前在CLJS-1658和7e15b1f2b894d93ef94ff86d75226f1fd3919580中已被解决,但也许有一些我们正在遇到的其他事情,导致我们再次检出错误。