Clojure - 循环语句



loop 特殊形式不像 ‘for’ 循环。loop 的用法与 let 绑定相同。但是,loop 设置了一个递归点。递归点设计用于与 recur 一起使用,这意味着 loop 始终与 recur 一起使用。要使循环发生,为 recurs 指定的参数数量(元数)必须与 loop 的绑定数量一致。这样,recur 返回到 loop。

语法

以下是 loop 语句的通用语法。

loop [binding]
(condition
   (statement)
   (recur (binding)))

以下是此循环的图示表示。

Loop Statement

示例

以下是一个 ‘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)

在上面的示例中,我们首先使用 loop 语句将 'x' 的值绑定到 10。然后,我们使用 when 条件子句来查看 'x' 的值是否小于 1。然后,我们将 'x' 的值打印到控制台,并使用 recur 语句重复循环。在 'x' 的值递减 2 后,循环将重复。

输出

以上代码产生以下输出。

10
8
6
4
2
clojure_loops.htm
广告

© . All rights reserved.