gpt4 book ai didi

clojure - Clojure 中的 Do-while 循环?

转载 作者:行者123 更新时间:2023-12-03 00:30:36 28 4
gpt4 key购买 nike

所以我想首先执行一堆代码,然后询问用户是否想再执行一次。我认为最方便的方法是使用像 C++ 中的 do-while 循环,并且由于我在 Clojure 中似乎找不到任何 do-while 函数,所以我编写了以下内容:

(defmacro do-while
"Executes body before testing for truth expression"
[test & body]
`(do (do ~@body) (while ~test ~@body)))

是否有更好的(如更惯用的 Clojure-ish)方式来编写这个宏,或者也许有更好的方式来做我想做的事情而不需要通过 do-while 路线?

最佳答案

这是 Clojure's while macro 的稍微更改的版本,其中测试是在评估主体后完成的:

(defmacro do-while
[test & body]
`(loop []
~@body
(when ~test
(recur))))

关于clojure - Clojure 中的 Do-while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8675911/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com