标签: for-loop clojure
在REPL中,这段代码工作得很好并给出答案36
(do (load-string (str "(def yyy" 2 " 18)")) (* 2 yyy2))
虽然当我向其中引入for循环时它不起作用
(do (for [x [1 2 3]] (load-string (str "(def yyyy" x " 18)"))) (* 2 yyyy2))
错误表示无法解析符号yyyy2,它应该在load-string中定义。有些专家可以解释一下我的原因吗?谢谢!
答案 0 :(得分:1)
for生成一个惰性序列,因此在强制进行评估之前,不会评估load-string表达式。您可以将for或dorun包裹inputType="text"来强制执行此操作。
for
load-string
dorun
inputType="text"
对于您只需要副作用的情况,您应该使用doall,或者只需要迭代一系列数字doseq也可能会很方便。
doall
doseq