💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 迭代 有很多方法可以遍历一个集合。 宏 `dotimes` 会执行给定的表达式一定次数, 一个本地binding会被给定值:从0到一个给定的数值. 如果这个本地binding是不需要的 (下面例子里面的 `card-number` ), 可以用下划线来代替, 看例子: ``` (dotimes [card-number 3] (println "deal card number" (inc card-number))) ; adds one to card-number ``` 注意下上面例子里面的 `inc` 函数是为了让输出变成 1, 2, 3 而不是 0, 1, 2。上面代码的输出是这样的: ``` deal card number 1 deal card number 2 deal card number 3 ``` 宏 `while` 会一直执行一个表达式只要指定的条件为true. 下面例子里面的 `while` 会一直执行,只要这个线程没有停: ``` (defn my-fn [ms] (println "entered my-fn") (Thread/sleep ms) (println "leaving my-fn")) (let [thread (Thread. #(my-fn 1))] (.start thread) (println "started thread") (while (.isAlive thread) (print ".") (flush)) (println "thread stopped")) ``` 上面代码的输出是这样的: ``` started thread .....entered my-fn. .............leaving my-fn. thread stopped ```