最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
ステートメントのグループのいずれか 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
の動作とは異なります。