For loop for循环不';t执行
我正在写一个小函数,有一个奇怪的bug。我的for循环不执行:For loop for循环不';t执行,for-loop,clojure,For Loop,Clojure,我正在写一个小函数,有一个奇怪的bug。我的for循环不执行: (fn [resp] (let [i (s/split resp #"<br>")] (for [j i] (println j)))) (fn[resp] (让我 (s/split resp#“”) (适用于[j i] (println j) 所以我没有结果,也不管我的for部分中的代码是什么。有什么问题吗 编辑: 我重写了我的函数: (fn [resp]
(fn [resp]
(let [i
(s/split resp #"<br>")]
(for [j i]
(println j))))
(fn[resp]
(让我
(s/split resp#“
”)
(适用于[j i]
(println j)
所以我没有结果,也不管我的for部分中的代码是什么。有什么问题吗
编辑:
我重写了我的函数:
(fn [resp]
(for [i (s/split resp #"<br>")]
(println i))
(fn[resp]
(适用于[i(s/split resp#“
”))
(一)
它仍然没有执行。您遇到了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)
表达式运行
您可以在中查看更多详细信息。您遇到了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)
表达式运行
您可以在中看到更多详细信息。OP很可能不理解Clojure
for
宏与其他语言(如C或Java)中的for
循环之间的区别。我最好的猜测是OP真正想要的是类似于(doseq[i[1 2 3]](println i))的东西
.OP很可能不理解宏的Clojure与其他语言(如C或Java)中的
循环的之间的区别。我最好的猜测是,OP真正想要的是类似于(doseq[i[1 2 3]](println i))
的东西。