3

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

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

我知道这是不可能的,但是我怎么能得到类似的_顺序解构recur呢?

4

1 回答 1

3

假设y永远不会在 内部更改loop,您可以将所有内容包装在let将值绑定到 的 a 中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)))
于 2015-07-12T22:38:55.447 回答