【发布时间】:2013-09-21 00:07:46
【问题描述】:
在我的 Clojure 代码中,我想在循环中使用 Java 对象的副作用方法。我的意图是将 Java 对象的多个参数设置为我存储在地图中的值:
(def params {
:param1 "value1"
:param2 "value2"
})
如果我直接将param1 设置为"value1",它可以正常工作:
(.setParam object (str :param1) "value1")
但是,如果我想迭代 params 映射以强制使用 doseq 进行评估,Java 对象保持不变:
(doseq [[param value] params] (.setParam object (str param) value))
如何循环 params 映射并使用副作用 setParam 方法,以使 Java object 发生变异?
我相信这可能是一个初学者错误,对于更有经验的 Clojure 用户来说很容易解决。
【问题讨论】:
标签: java clojure lazy-evaluation