Clojure - 循环语句
循环特殊形式与'for'循环不同。 Loop的用法与let绑定相同。 然而,循环设置了一个递归点。 递归点设计为与recur一起使用,这意味着循环始终与recur一起使用。 要使循环发生,为递归指定的参数(arity)数量必须与循环的绑定数量一致。 这样,recur 就会回到循环。
语法
以下是循环语句的一般语法。
loop [binding] (condition (statement) (recur (binding)))
以下是该循环的图示。
示例
以下是"for-in"语句的示例。
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (loop [x 10] (when (> x 1) (println x) (recur (- x 2))))) (Example)
在上面的示例中,我们首先使用循环语句将"x"的值绑定到 10。 然后,我们使用 when 条件子句 来查看"x"的值是否小于 1。然后,我们将"x"的值打印到控制台,并使用 recur 语句重复循环。 当"x"的值减 2 后,重复循环。
输出
上面的代码产生以下输出。
10 8 6 4 2