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

❮ clojure_loops.html