我正在寻找提取函数参数的类型提示信息,但我似乎找不到访问该信息的方法。
例如,假设我有以下功能:
(defn ^Double do-something [^String a, ^String b]
5.0)
拉取标签很简单:
(:tag (meta #'do-something)) ; => java.lang.Double
然而,对于争论来说,这样的事情是行不通的:
(:arglists (meta #'do-something)) ; => ([a b])
这只是给我参数而不是类型信息。有没有办法获取类型a
and b
?
我想这样做的原因是因为我正在编写一个工具来分析/记录函数,如果函数有类型提示,我想知道。
仅出于文档目的向代码添加类型提示似乎不是一个特别好的主意,但我只想使用该信息,如果它已经存在并且没有其他类型信息存在(例如,如果使用了 core.typed)。
您需要获取参数的元数据:
user=> (map meta (first (:arglists (meta #'do-something))))
({:tag String} {:tag String})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)