Clojure-loop-statement

提供:Dev Guides
移動先:案内検索

Clojure-ループステートメント

ループの特別な形式は、 'for' ループとは異なります。 ループの使用法はletバインディングと同じです。 ただし、ループは再帰ポイントを設定します。 再帰ポイントは 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)

上記の例では、最初にloopステートメントを使用して「x」の値を10にバインドしています。 次に、* when条件句*を使用して、「x」の値が1より小さいかどうかを確認します。 次に、「x」の値をコンソールに出力し、recurステートメントを使用してループを繰り返します。 「x」の値が2減少した後、ループが繰り返されます。

出力

上記のコードは次の出力を生成します。

10
8
6
4
2