首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure:未调用for循环内容

clojure:未调用for循环内容
EN

Stack Overflow用户
提问于 2012-04-13 07:37:45
回答 1查看 120关注 0票数 1

我正在尝试使用Clojure的BaseX中的内部数据类型来构建一个XML结构。

代码语言:javascript
复制
(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))

当使用this命令创建一个元素时,永远不会打印"THIS IS REACHED“:

代码语言:javascript
复制
(def test-elem (basex-elem "element-name" {:key1 "value1", :key2 "value2"}))
; => #'user/test-elem 

因此返回的值没有任何属性:

代码语言:javascript
复制
test-elem
; => #<FElem <element-name/>>

但添加属性的效果与此不同。

代码语言:javascript
复制
(.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"/>>

因此,假设我对循环做了一些错误的事情。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-13 07:41:56

for在clojure中不是一个循环结构,而是一个列表理解,并产生一个惰性序列。

如果要产生副作用,请改用doseq

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10133341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档