请在 2024 年 Clojure 状态调查 中分享您的想法!

欢迎!请参阅 关于 页面以获取更多关于如何使用本站的信息。

+3
data.xml
重新标记

编码或解码 XML 名称空间名称是否需要反射?这种反射在 "definline" 中,可能正在遇到不希望的风向。

这是与clojure.data.xml 0.2.0-alpha6一起的,这是我在 Maven Central 上看到的最新版本;以及 OpenJDK 11。

程序

(set! *warn-on-reflection* true)
(require '[clojure.data.xml :as data.xml])

输出

Reflection warning, clojure/data/xml/jvm/name.clj:35:1 - call to static method decode on java.net.URLDecoder can't be resolved (argument types: unknown, java.lang.String).
Reflection warning, clojure/data/xml/jvm/name.clj:38:1 - call to static method encode on java.net.URLEncoder can't be resolved (argument types: unknown, java.lang.String).

我认为将 "unknown" 首个参数类型提示为 String 是既安全又有效的。有关的问题 URLEncoder/URLDecoder 方法是多态的,但所有签名都要求第一个参数为 String。

2 个答案

0
0

实际上你无法在这个内联函数中添加类型提示(内联时你将得到词汇值,这可能是无法包含元数据的字面量字符串),所以唯一的简单解决方案确实是不使用内联函数(不确定这到底是否是一个好的需求)。

...