循环 – 我的Clojure循环中没有任何事情发生

当我执行如下循环时,我有一个小代码,根本不想工作:

...

    (defn my-function []
        (println "Hi")   ;this works
        (for [i (range 10)] (println "Hello")  ;this doesn't work!
          )
    )

...

我无法理解问题是什么,循环内的所有代码似乎都被忽略了,而“Hi”打印没有问题

我通过GUI按钮事件调用’myfunction’,如下所示:

...
    (.append output-text (with-out-str  (time (my-function))))
...

您是否认为问题可能存在于GUI或我遗漏的其他内容中?有什么建议吗?
我知道我应该使用REPL来测试它,但它不适用于Netbeans ……:S

非常感谢您的帮助.

最佳答案
for宏是惰性的,因此除非实际需要返回值,否则它不会调用您的函数.

请改用doseq函数.它会强制评估你的代码,因此不是懒惰的.它具有相同的“语法”,并允许您考虑副作用函数,如println.

转载注明原文:循环 – 我的Clojure循环中没有任何事情发生 - 代码日志