尝试执行简单的线程宏时出现主题错误。
关键字定义
(def entityType (keyword "name"))
(def entityURI (keyword "uri"))
我有以下'懒惰'序列:
(def m1
(({:uri "...#OWLClass_82601afd_b43d_43b4_94fe_2836f40009ca", :name "foo"}
{:uri "...#OWLClass_8c6759f0_a165_4a09_a9d8_2603bb106fc6", :name "bar"}))
这是REPL主题:
(->> (first m1)
(map (fn [rec] (rec entityType))))
结果错误:
IllegalArgumentException Key must be integer clojure.lang.APersistentVector.invoke (APersistentVector.java:265)
任何有见识的人?
答案 0 :(得分:3)
根据您的代码,我猜测您希望m1
被声明为:
(def m1
(list (list {:uri "...#OWLClass_82601afd_b43d_43b4_94fe_2836f40009ca", :name "foo"}
{:uri "...#OWLClass_8c6759f0_a165_4a09_a9d8_2603bb106fc6", :name "bar"})))
因此:
(->> (first m1)
(map (fn [rec] (rec entityType))))
;=> ("foo" "bar")
这是你追求的吗?
修改强>:
根据你的评论,我明白m1
的结构更平坦,就像这样:
(def m1
(list {:uri "...#OWLClass_82601afd_b43d_43b4_94fe_2836f40009ca", :name "foo"}
{:uri "...#OWLClass_8c6759f0_a165_4a09_a9d8_2603bb106fc6", :name "bar"}))
根据此情况,您只需执行(map (fn [rec] (rec entityType)) m1)
并删除->>
。
答案 1 :(得分:0)
对于那些在搜索了此错误字符串后最终看完这篇文章的人,请当心,不要误将a(关键字...)关联到向量:'
(def foo [])
(assoc-in foo [:aaa(关键字“ b-bb”)] [“ obj”])