- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我明白了
(dotimes (temp-one 10 temp-one))
来自 dotimes
上的 Hyperspec 示例。运行此命令会产生答案 10。因此,第三个参数位置中的 temp-one
充当返回的“结果”,但是当 dotimes
启动时它是如何达到 10 的在 0 处并且只会到达 9?
>(dotimes (temp-one 10 temp-one) (format t "~3d " temp-one))
0 1 2 3 4 5 6 7 8 9
10
关于第三个参数,我缺少什么?
最佳答案
如果你看dotimes Hyperspec entry它声明它是一个宏,这意味着您可以通过调用macroexpand来查看“底层”:
(macroexpand '(dotimes (i 10 i)))
SBCL:
(BLOCK NIL
(LET ((I 0))
(DECLARE (TYPE UNSIGNED-BYTE I))
(TAGBODY
(GO #:G386)
#:G385
(TAGBODY)
(PSETQ I (1+ I))
#:G386
(UNLESS (>= I 10) (GO #:G385))
(RETURN-FROM NIL (PROGN I)))))
Allegro CL:
(do ((i 0 (1+ i)))
((>= i 10) i))
在这两种情况下,迭代变量i都会增加1,然后完成最终测试(>= i 10)
。如jkiiski写道:
"At the time result-form is processed, var is bound to the number of times the body was executed."
以及(return-from ..)
形式 (SBCL) 和 i
形式 (Allegro CL) 在变量增加和测试后进行评估。
关于loops - Common Lisp dotimes 结果之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405744/
我经常发现自己想要使用整数索引(如“dotimes”)多次高效地运行 Clojure 函数,但也希望将结果作为现成的序列/列表(如“for”)输出。 即我想做这样的事情: (fortimes [i 1
我明白了 (dotimes (temp-one 10 temp-one)) 来自 dotimes 上的 Hyperspec 示例。运行此命令会产生答案 10。因此,第三个参数位置中的 temp-one
我有一个维度为 '(3 3 2) 的数组,名称为 test-array: #3A(((0 0) (0 0.1) (0 0.3)) ((1 0) (1 0.1) (1 0.3)) ((2
我正在创建一个函数,通过 dotimes 循环将 1 输入和“x”输入之间的所有数字相乘。如果您愿意的话,请检查我的函数并说出问题所在,因为我不太了解Scheme 中的循环。 (define (pro
我是一名优秀的程序员,十分优秀!