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
廣告