Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 从循环中获取值(Clojure)_Loops_Clojure - Fatal编程技术网

Loops 从循环中获取值(Clojure)

Loops 从循环中获取值(Clojure),loops,clojure,Loops,Clojure,如果我做一个循环,怎么可能在每次循环中得到标准中变量的值呢?我不是说在屏幕上打印它们,因为只要你在一个循环中,值就会返回到循环中,而不会出来,唯一进入标准输出的实际上是结束值。例如:(loop[x0](if(

如果我做一个循环,怎么可能在每次循环中得到标准中变量的值呢?我不是说在屏幕上打印它们,因为只要你在一个循环中,值就会返回到循环中,而不会出来,唯一进入标准输出的实际上是结束值。例如:
(loop[x0](if(
因此,我只在循环结束时获得1234567890,但我还需要0、1、2、3和4到标准输出。

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

(loop [x 0 acc []]
  (if (< x 5)
    (recur (inc x) (conj acc x))
    (conj acc 1234567890)))
(循环[x 0 acc[]
(如果(

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

可能您正在寻找的是
的列表理解
,或者
范围

对于@zero323提到的
循环
,您需要使用累加器。

描述为is的问题看起来既奇怪又肮脏。它背后的真正问题是什么?你所说的标准输出而非打印是什么意思?你到底想做什么?我想把来自循环的值发送到另一个函数,所以我想把它们作为索引号,用于查找coll的值:
(n)(这里是来自循环的数字,作为下一个coll的索引)coll
问题是,大多数对象返回nil,是否可以从循环中获取作为返回值的值?例如,您可以使用map:
(conj acc{:v x})包装它
。尽管如此,整个想法还是有点可疑。你想使用
循环的具体原因是什么?没有更多的细节,我只能重复我之前说过的内容-map或for可能是更好的选择。我真正想做的是(我知道这一个不起作用):
(n[1 2 3 4](do(Thread/sleep 500)(for[I(range 4)]i))
因此,递归每次给我一个半秒的集合内容。预期的输出是:
1234
每500毫秒一次