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