Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 为什么循环语句的绑定向量数量不均匀?_Clojure - Fatal编程技术网

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)

非常感谢。我真傻。我在你的例子中看到了。谢谢。我真傻。我在你的例子中看到了。