Lisp-loops

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

LISP-ループ

コードのブロックを何度も実行する必要がある場合があります。 ループステートメントを使用すると、ステートメントまたはステートメントのグループを複数回実行できます。ほとんどのプログラミング言語では、以下がループステートメントの一般的な形式です。

ループ

LISPは、ループ要件を処理するために次のタイプの構造を提供します。 詳細を確認するには、次のリンクをクリックしてください。

Sr.No. Construct & Description
1

loop

  • loop* コンストラクトは、LISPが提供する最も単純な反復形式です。 最も単純な形式では、 *return* ステートメントが見つかるまで、いくつかのステートメントを繰り返し実行できます。
2

loop for

ループの構成により、他の言語で最も一般的な反復のようなforループを実装できます。

3

do

doコンストラクトは、LISPを使用して反復を実行するためにも使用されます。 反復の構造化された形式を提供します。

4

dotimes

dotimesコンストラクトにより、一定の反復回数のループが可能になります。

5

dolist

dolistコンストラクトにより、リストの各要素を反復処理できます。

ブロックを正常に終了する

*block* および *return-from* を使用すると、エラーが発生した場合にネストされたブロックを正常に終了できます。
*block* 関数を使用すると、0個以上のステートメントで構成される本体を持つ名前付きブロックを作成できます。 構文は-
(block block-name(
...
...
))
*return-from* 関数は、ブロック名とオプション(デフォルトはnil)の戻り値を取ります。

次の例はこれを示しています-

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します-

(defun demo-function (flag)
   (print 'entering-outer-block)

   (block outer-block
      (print 'entering-inner-block)
      (print (block inner-block

         (if flag
            (return-from outer-block 3)
            (return-from inner-block 5)
         )

         (print 'This-wil--not-be-printed))
      )

      (print 'left-inner-block)
      (print 'leaving-outer-block)
   t)
)
(demo-function t)
(terpri)
(demo-function nil)

実行ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐに実行し、返される結果は-

ENTERING-OUTER-BLOCK
ENTERING-INNER-BLOCK

ENTERING-OUTER-BLOCK
ENTERING-INNER-BLOCK
5
LEFT-INNER-BLOCK
LEAVING-OUTER-BLOCK