LISP-ループ
コード番号のブロックを何度も実行する必要がある場合があります。ループステートメントを使用すると、ステートメントまたはステートメントのグループを複数回実行できます。以下は、ほとんどのプログラミング言語でのループステートメントの一般的な形式です。
LISPは、ループ要件を処理するために次のタイプの構造を提供します。詳細を確認するには、次のリンクをクリックしてください。
シニア番号 | 構成と説明 |
---|---|
1 | ループ ザ・ loop構成は、LISPが提供する最も単純な反復形式です。最も単純な形式では、ステートメントが見つかるまで、いくつかのステートメントを繰り返し実行できます。return ステートメント。 |
2 | ループ 構文のループを使用すると、他の言語で最も一般的な反復のようなforループを実装できます。 |
3 | 行う do構文は、LISPを使用して反復を実行するためにも使用されます。構造化された形式の反復を提供します。 |
4 | dotimes dotimes構造により、一定の反復回数のループが可能になります。 |
5 | ドリスト 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