Clojure 为什么循环语句的绑定向量数量不均匀?
我一直在看示例和文档;我不明白为什么我会得到Clojure 为什么循环语句的绑定向量数量不均匀?,clojure,Clojure,我一直在看示例和文档;我不明白为什么我会得到 循环要求绑定向量中的表单数为偶数错误 我认为问题在于循环和初始化使用指示。我只是不知道我做错了什么 (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
循环要求绑定向量中的表单数为偶数
错误
我认为问题在于循环和初始化使用指示。我只是不知道我做错了什么
(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)))))))
循环
表单应该与let
表单一样。为了清晰起见,可以添加逗号空白:
(loop [symbol1 init1, symbol2 init2, ...] body-of-expressions)
看起来你可能想要
(loop [curr-reading reading, ui usage-indicies, curr-idx curr-idx] ...)
其中,curr index
从let
表达式初始化(反弹)为curr index
更好的是,您可以将let
表单中正在进行的初始化向下移动到循环
表单本身。它还看起来好像usage vec len
只是usage index
的count
,因此无需在全局def
中指定它,这时您也可以在循环绑定中处理它
(loop [curr-reading reading
ui [0 0 0 0 0 0 0 0 0 0 0 0 0]
curr-idx (dec (count ui))]
body-of-expressions)
循环
表单应该与let
表单一样。为了清晰起见,可以添加逗号空白:
(loop [symbol1 init1, symbol2 init2, ...] body-of-expressions)
看起来你可能想要
(loop [curr-reading reading, ui usage-indicies, curr-idx curr-idx] ...)
其中,curr index
从let
表达式初始化(反弹)为curr index
更好的是,您可以将let
表单中正在进行的初始化向下移动到循环
表单本身。它还看起来好像usage vec len
只是usage index
的count
,因此无需在全局def
中指定它,这时您也可以在循环绑定中处理它
(loop [curr-reading reading
ui [0 0 0 0 0 0 0 0 0 0 0 0 0]
curr-idx (dec (count ui))]
body-of-expressions)
非常感谢。我真傻。我在你的例子中看到了。谢谢。我真傻。我在你的例子中看到了。