clojure:对于未调用的循环内容
我正在尝试使用Clojure中BaseX的内部数据类型构建XML结构clojure:对于未调用的循环内容,clojure,Clojure,我正在尝试使用Clojure中BaseX的内部数据类型构建XML结构 (defn basex-elem [token-name dict] (let [elem (org.basex.query.item.FElem. (org.basex.query.item.QNm. token-name))] (for [[k v] dict] (do (println "THIS IS REACHED") (let
(defn basex-elem [token-name dict]
(let [elem (org.basex.query.item.FElem.
(org.basex.query.item.QNm. token-name))]
(for [[k v] dict]
(do
(println "THIS IS REACHED")
(let [k-name (org.basex.query.item.QNm. (.getName k))
k-attr (org.basex.query.item.FAttr.
k-name
org.basex.util.Token/token v))]
(.add elem k-attr))))
elem))
使用此按钮创建元素时,永远不会打印“到此为止”:
(def test-elem (basex-elem "element-name" {:key1 "value1", :key2 "value2"}))
; => #'user/test-elem
因此,返回的值没有任何属性:
test-elem
; => #<FElem <element-name/>>
测试元素
; => #
但添加属性则不然
(.add test-elem
(org.basex.query.item.FAttr.
(org.basex.query.item.QNm. "foo")
(org.basex.util.Token/token "bar")))
; => #<FElem <element-name foo="bar"/>>
(.添加测试元素
(org.basex.query.item.FAttr。
(org.basex.query.item.QNm.“foo”)
(org.basex.util.Token/Token“bar”))
; => #
因此,大概我对循环做了一些错误的事情。有任何指针吗?
for
在clojure中不是循环构造,而是列表理解并生成惰性序列
当需要副作用时,请使用
doseq
。for
在clojure中不是循环构造,而是列表理解,并生成惰性序列
当需要副作用时,使用doseq
。“产生惰性序列”。。。就在文档()中,我没有看到它。谢谢“生成一个惰性序列”。。。就在文档()中,我没有看到它。谢谢