Clojure 中的许多宏在宏展开时都会由编译器执行规范。
在此时刻,extend-protocol
没有这样的规范。
我想知道 extend-protocol
是否应该与 (Class/forName ..)
一起工作,或者扩展协议的类名必须始终是一个符号。规范是获取此答案的自然地方。extend-protocol
已知当您提供多个时无法与 Class/forName
一起工作。
(extend-protocol IFoo (Class/forName "[B") (Class/forName "[D")) 语法错误 (IllegalArgumentException) 编译于 (REPL:1:1)。不知道如何从:java.lang.Character 创建 ISeq
如果规范对此有任何说明,我还可以在 clj-kondo 中为它创建 linting。在此时刻这似乎有些含糊不清:(extend-protocol IFoo (Class/forName "[B"))
是可以正常工作的。
相关问题:https://clojure.atlassian.net/browse/CLJ-1381