从循环中获取值(Clojure)

时间:2015-07-17 00:07:31

标签: loops clojure

如果我做一个循环,那么每回合怎么可能在标准输出中获得变量的值?我不是在谈论在屏幕上打印它们,因为只要你处于循环中,值就会返回以继续循环而不会出现,唯一一个标准输出实际上是结束值。举个例子:(loop [x 0] (if (< x 5) (recur (inc x)) 1234567890)))所以我只在循环结束时才得到1234567890,但我还想要std.out的0,1,2,3和4。

2 个答案:

答案 0 :(得分:3)

好吧,loop不是循环而是递归点。如果要收集所有值,可以使用某种累加器:

(loop [x 0 acc []]
  (if (< x 5)
    (recur (inc x) (conj acc x))
    (conj acc 1234567890)))

除非递归是您真正想要的某种mapfor(列表理解),否则可能是更好的选择。

答案 1 :(得分:1)

列表理解for可能就是您要找的,或range。 对于loop,因为@ zero323已经提到过你需要使用累加器。