如果我做一个循环,那么每回合怎么可能在标准输出中获得变量的值?我不是在谈论在屏幕上打印它们,因为只要你处于循环中,值就会返回以继续循环而不会出现,唯一一个标准输出实际上是结束值。举个例子:(loop [x 0] (if (< x 5) (recur (inc x)) 1234567890)))
所以我只在循环结束时才得到1234567890,但我还想要std.out的0,1,2,3和4。
答案 0 :(得分:3)
好吧,loop
不是循环而是递归点。如果要收集所有值,可以使用某种累加器:
(loop [x 0 acc []]
(if (< x 5)
(recur (inc x) (conj acc x))
(conj acc 1234567890)))
除非递归是您真正想要的某种map
或for
(列表理解),否则可能是更好的选择。
答案 1 :(得分:1)
列表理解for
可能就是您要找的,或range
。
对于loop
,因为@ zero323已经提到过你需要使用累加器。