2
有没有解构循环中的recur
绑定的方法? 因此,举例来说,如果我想让y
保持不变在Clojure中的循环解构
(loop [x 1 y 1] (if (< x 5) (recur (inc x) _) (println "result:" x y))
我知道这是不可能的,但我怎么能得到这样_
类似的事情在连续解构为recur
?
有没有解构循环中的recur
绑定的方法? 因此,举例来说,如果我想让y
保持不变在Clojure中的循环解构
(loop [x 1 y 1] (if (< x 5) (recur (inc x) _) (println "result:" x y))
我知道这是不可能的,但我怎么能得到这样_
类似的事情在连续解构为recur
?
假设y
从来没有loop
内改变,你可以只是包装一切的let
结合的值y
,甚至把你的loop
在接收y
作为自变量的函数。
let
(let [y 1]
(loop [x 1]
(if (< x 5)
(recur (inc x))
(println "result:" x y)))
defn
(defn loop-with [y]
(loop [x 1]
(if (< x 5)
(recur (inc x))
(println "result:" x y)))
如果你想y以留uncahnged,你为什么不只是不停地跳出循环/复发吗? (let [y 1](loop [x 1](if ... –
)我将在其他条件下使用它在其他条件下使用'cond'而不是'if' – amirteymuri
y仍然可用于使用cond ot无论你想从let中定义什么,recur就像调用函数一样,你也不能调用(+ 3 _)。 –