高水準の case コマンドが、複数の候補のなかから代替実行フローを選択するために用意されています。このコマンドの方が、深く入れ子になった if...then コマンドよりも読みやすいという利点があります。
表 4-29 に条件付き case コマンドを示します。
表 4-29 case 文コマンド
コマンド |
スタックダイアグラム |
説明 |
---|---|---|
case |
( selector -- selector ) |
case...endcase 条件付き構造を開始します。 |
endcase |
( selector -- ) |
case...endcase 条件付き構造を終了します。 |
endof |
( -- ) |
条件付き構造内の of...endof 句を終了します。 |
of |
( selector test-value -- selector | {empty} ) |
case 条件付き構造内の of...endof 句を開始します。 |
次に case コマンドの使用例を示します。
ok : testit ( testvalue -- ) ] case ] 0 of ." It was zero " endof ] 1 of ." It was one " endof ] ff of ." Correct " endof ] -2 of ." It was minus-two " endof ] ( default ) ." It was this value: " dup . ] endcase ." All done." ; ok ok 1 testit It was one All done. ok ff testit Correct All done. ok 4 testit It was this value: 4 All done. ok |
(省略可能な) default 句はまだスタックにあるテスト値を使用できますが、その値を削除しないでください (. でなく dup .を使用してください)。of 句が正常に実行されれば、テスト値はスタックから自動的に削除されます。