Clojure中的循环解构

时间:2015-07-12 08:06:06

标签: clojure destructuring

有没有办法在循环中解构recur绑定? 例如,如果我想让y保持不变

(loop [x 1 y 1] (if (< x 5) (recur (inc x) _ ) (println "result:" x y))

我知道这是不可能的,但是如何才能在_的顺序解构中得到像recur这样的类似内容?

1 个答案:

答案 0 :(得分:2)

假设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)))

import android.util.Log