for循环不执行

for-loop doesn't executing

我正在编写小函数并且有一个奇怪的错误。我的 for 循环没有执行:

(fn [resp]
  (let [i
    (s/split resp #"<br>")]
    (for [j i]
      (println j))))

所以我没有结果,我的 for 部分中的代码也不重要。有什么问题吗?


已编辑:
我重写了我的函数:

(fn [resp]
  (for [i (s/split resp #"<br>")]
    (println i))

它仍然没有执行。

您遇到了 Clojure for 循环的惰性方面:

(defn dummy []
  (println :aaa)
  (for [i [1 2 3]]
    (println i))
  (println :bbb)
  (vec
    (for [i [1 2 3]]
      (println i)))
  (println :ccc))

调用时,你得到输出:

:aaa
:bbb
1
2
3
:ccc

vec(或doall)将强制计算惰性循环,从而导致(println i)表达式为运行。

您可以在 this list of documentation 中查看更多详细信息。