我一直在查看示例和文档;而且我无法弄清楚为什么我会得到
loop requires an even number of forms in binding vector
错误。
我认为问题出现在循环和初始化使用指标中。我无法弄清楚我做错了什么。
(def usage-vec-len 13)
(defn ret-usage-indicies
"Takes a billed water consumption amount, and returns a vector of the ranges."
[reading]
(let [usage-indicies [0 0 0 0 0 0 0 0 0 0 0 0 0] curr-idx (- usage-vec-len 1)]
(loop [curr-reading reading ui usage-indicies curr-idx]
.
.
.
(if (= remaining-reading 0)
ui
(recur remaining-reading (assoc ui curr-idx curr-reading) (dec curr-idx)))))))
答案 0 :(得分:4)
loop
表单应该看起来像let
表单。为清晰起见,您可以添加逗号空格:
(loop [symbol1 init1, symbol2 init2, ...] body-of-expressions)
看起来你可能想要
(loop [curr-reading reading, ui usage-indicies, curr-idx curr-idx] ...)
其中curr-index
从curr-index
表达式初始化(反弹)到let
。
更好的是,您可以将let
表单中的初始化向下移动到loop
表单本身。它看起来好像usage-vec-len
只是count
的{{1}},所以当你可以在循环绑定中处理它时,无需在全局usage-indices
中指定它同样。
def