switch, case, otherwise
ステートメントのグループのいずれか 1 つを実行
構文
switchswitch_expressioncasecase_expressionstatementscasecase_expressionstatements... otherwisestatementsend
説明
switch は式を評価し、ステートメントのグループのいずれか 1 つを実行するよう選択します。選択肢は case です。 switch_expression, case case_expression, end
switch ブロックは、true のケース式が見つかるまで、各 case をテストします。以下の場合、case は true です。
数値の場合、
。case_expression==switch_expression文字ベクトルおよび string の場合、
strcmp(。文字ベクトルの cell 配列は特殊なケースであり、cell 配列の少なくとも 1 つの要素が一致すればcase_expression,switch_expression) == 1caseが一致します。関数
eqをサポートするオブジェクトの場合、。オーバーロードされた関数case_expression==switch_expressioneqの出力は 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 より前に導入
