多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 迭代 有很多方法可以遍历一个集合。 宏 `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 ```