我正在尝试在clojure.data.xml中注释元素记录,即:
(defrecord Element [tag attrs content])
我注释如下:
(t/ann-record Element [tag :- t/Keyword attrs :- (t/HMap :complete? false)
content :- (t/Vec Element)])
我有以下功能,不进行类型检查:
(t/ann get-content [Element -> (t/Vec Element)])
(defn get-content [xml]
(:content xml))
with'Expected:t / Vec clojure.data.xml.Element Actual:t / Any'
我也尝试用(get xml :content)
替换它,但它失败了相同的输出。
我想知道我做错了什么:D
答案 0 :(得分:0)
您可能需要在Element
调用中完全限定ann-record
(我假设您的代码实际上不在clojure.data.xml
命名空间中)。
...
; a record in another namespace
(ann-record another.ns.TheirRecord
[str :- String,
vec :- (Vec Number)])
...
所以在这个特殊情况下:
(t/ann-record clojure.data.xml.Element
[tag :- t/Keyword
attrs :- (t/HMap :complete? false)
content :- (t/Vec Element)])