switch, case, otherwise
ステートメントのグループのいずれか 1 つを実行
構文
switchswitch_expression
casecase_expression
statements
casecase_expression
statements
... otherwisestatements
end
説明
switch
は式を評価し、ステートメントのグループのいずれか 1 つを実行するよう選択します。選択肢は case です。 switch_expression
, case case_expression
, end
switch
ブロックは、true のケース式が見つかるまで、各 case をテストします。以下の場合、case は true です。
数値の場合、
。case_expression
==switch_expression
文字ベクトルの場合、
strcmp(
。case_expression
,switch_expression
) == 1関数
eq
をサポートするオブジェクトの場合、
。オーバーロードされた関数case_expression
==switch_expression
eq
の出力は logical 値か logical 値に変換可能かのいずれかでなければなりません。数値、文字ベクトル、オブジェクトに対して上記で定義されているように、cell 配列
case_expression
の場合、cell 配列の少なくとも 1 つの要素はswitch_expression
と一致します。
ケース式が true の場合、MATLAB® は対応するステートメントを実行し、switch
ブロックを終了します。
評価された switch_expression
は、スカラーまたは文字ベクトルでなければなりません。評価された case_expression
は、スカラー、文字ベクトル、またはスカラーか文字ベクトルの cell 配列でなければなりません。
otherwise
ブロックはオプションです。MATLAB は true になる case がない場合にのみステートメントを実行します。
例
ヒント
switch_expression
と比較するために、case_expression
に、<
や>
などの関係演算子を含めることはできません。非等価性をテストするには、if, elseif, else
ステートメントを使用します。MATLAB
switch
ステートメントは C 言語のswitch
ステートメントとは異なり、何かを必ず実行します。最初のcase
ステートメントがtrue
の場合、MATLAB は他のcase
ステートメントを実行しません。以下に例を示します。result = 52; switch(result) case 52 disp('result is 52') case {52, 78} disp('result is 52 or 78') end
result is 52
その case 内の特定の case のコードに必要なすべての変数を定義します。MATLAB が
switch
ステートメントの case を 1 つだけ実行するので、1 つの case 内に定義された変数を他の case に使用できません。たとえば、現在のワークスペースに変数x
が含まれていない場合は、x
を定義している case のみがその変数を使用することができます。switch choice case 1 x = -pi:0.01:pi; case 2 % does not know anything about x end
MATLAB
break
ステートメントは、for
ループまたはwhile
ループの実行を終了させますが、switch
ステートメントの実行は終了させません。この動作は、C におけるbreak
およびswitch
の動作とは異なります。
拡張機能
バージョン履歴
R2006a より前に導入