欢迎!欲了解本网站的更多操作信息,请参阅 关于 页面。
在源代码中,我发现 Keyword 类没有扩展 AFn,并且有很多 invoke 声明,这些可以通过扩展 AFn 来移除。而 AFn 存在对这个目的。
invoke
那么为什么 Keyword 不扩展 AFn?与 Symbol 的行为相比,这不是一个应该被视为错误的bug吗? `(instance? clojure.lang.AFn :asdf)=> false
`
(instance? clojure.lang.AFn 'asdf)=> true `
AFn 是一个实现细节,因此绝对不应被视为错误(IFn 是这里的公共合约)。首先想到的是,我不知道为什么其中的一个扩展了 AFn,而另一个没有,这需要做些代码考古学的猜测,可能是一样的。但我们通常不会在没有充分理由的情况下改变正在工作的事物,因此现在没有理由更改这一点。