Clear Filters
Clear Filters

switch文で同じ​処理を複数のcase​で実行したい

126 views (last 30 days)
mayu
mayu on 16 Mar 2023
Commented: mayu on 16 Mar 2023
タイトル通りなのですが、switch文で複数のcaseで同じ処理を実行したいと思っています。
やりかたをググってマトラボのページは見つけられなかったのですが、C言語のページでイメージと似たものがあったので、
●switch文で複数のcaseで同じ処理を実行する
マネして書いてみたところ、
switch abcde
case 'A'
case 'B'
~ ABの場合に処理したい内容 ~
・・・
実行したら、Aが無視されていました。
switch abcde
case 'A'
~ ABの場合に処理したい内容 ~
case 'B'
~ ABの場合に処理したい内容 ~
・・・
と分けて書いたらできますが、無駄な感じがするのでやっぱりまとめたいです。
●switch caseのヘルプページ
もみていたのですがこのパターンが見当たらず、どう直したら実行されるのかわからなくて質問をさせていただきました。
わかる方がいらっしゃいましたら、お手数をおかけいたしますがご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 16 Mar 2023
>switch文で複数のcaseで同じ処理を実行 ⇒ その事をフォールスルーと呼びます。
MATLABはSwitch文がフォールスルーしない言語の為、いずれか一つのcase文しか通りません。
for abcde = 'ABC'
fprintf('abcde = ''%c''\n',abcde);
switch abcde
case 'A'
disp('~ abcde==''A'' の場合に処理したい内容 ~');
case 'B'
disp('~ abcde==''B'' の場合に処理したい内容 ~');
otherwise
disp('~ その他の場合 ~')
end
end
abcde = 'A'
~ abcde=='A' の場合に処理したい内容 ~
abcde = 'B'
~ abcde=='B' の場合に処理したい内容 ~
abcde = 'C'
~ その他の場合 ~
>どう直したら実行されるのか
下記の様な書き方で実行可能です。比較対象を複数個に出来ます。ドキュメントには下記の通り記載されています。
  • switch_expression は、スカラーまたは文字ベクトルでなければなりません
  • case_expression は、スカラー、文字ベクトル、またはスカラーか文字ベクトルの cell 配列でなければなりません。
for abcde = 'ABC'
fprintf('abcde = ''%c''\n',abcde)
switch abcde
case {'A','B'} % case_expression を文字ベクトルの cell 配列にする
disp('~ abcde==''A'' または abcde==''B''の場合に処理したい内容 ~');
otherwise
disp('~ その他の場合 ~')
end
end
abcde = 'A'
~ abcde=='A' または abcde=='B'の場合に処理したい内容 ~
abcde = 'B'
~ abcde=='A' または abcde=='B'の場合に処理したい内容 ~
abcde = 'C'
~ その他の場合 ~
  1 Comment
mayu
mayu on 16 Mar 2023
早々にありがとうございます!教えていただいた通りにしたらできました(>_<)
ヘルプにも記載があったのですね・・・(*_*; 
マトラボのヘルプ、いつも探し出せなかったり内容を読み解けなかったりしているのですが、私にもわかるように詳しく教えていただき、とても有難いです。
これも使いたい場面が多くありそうなのでうれしいです。ありがとうございました( ◠‿◠ )

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!