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

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

채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 3월 16일
>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
mayu
mayu 2023년 3월 16일
早々にありがとうございます!教えていただいた通りにしたらできました(>_<)
ヘルプにも記載があったのですね・・・(*_*; 
マトラボのヘルプ、いつも探し出せなかったり内容を読み解けなかったりしているのですが、私にもわかるように詳しく教えていただき、とても有難いです。
これも使いたい場面が多くありそうなのでうれしいです。ありがとうございました( ◠‿◠ )

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ループと条件付きステートメント에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!