- switch_expression は、スカラーまたは文字ベクトルでなければなりません
- case_expression は、スカラー、文字ベクトル、またはスカラーか文字ベクトルの cell 配列でなければなりません。
switch文で同じ処理を複数のcaseで実行したい
    108 ビュー (過去 30 日間)
  
       古いコメントを表示
    
タイトル通りなのですが、switch文で複数のcaseで同じ処理を実行したいと思っています。
やりかたをググってマトラボのページは見つけられなかったのですが、C言語のページでイメージと似たものがあったので、
●switch文で複数のcaseで同じ処理を実行する
マネして書いてみたところ、
switch abcde
    case 'A'
    case 'B'
        ~ AとBの場合に処理したい内容 ~
    ・・・
実行したら、Aが無視されていました。
switch abcde
    case 'A'
        ~ AとBの場合に処理したい内容 ~
    case 'B'
        ~ AとBの場合に処理したい内容 ~
    ・・・
と分けて書いたらできますが、無駄な感じがするのでやっぱりまとめたいです。
●switch caseのヘルプページ
https://jp.mathworks.com/help/matlab/ref/switch.html?searchHighlight=switch&s_tid=srchtitle_switch_1
もみていたのですがこのパターンが見当たらず、どう直したら実行されるのかわからなくて質問をさせていただきました。
わかる方がいらっしゃいましたら、お手数をおかけいたしますがご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
0 件のコメント
採用された回答
  Atsushi Ueno
      
 2023 年 3 月 16 日
        for abcde = 'ABC'
    fprintf('abcde = ''%c''\n',abcde);
    switch abcde
        case 'A'
            disp('~ abcde==''A'' の場合に処理したい内容 ~');        
        case 'B'
            disp('~ abcde==''B'' の場合に処理したい内容 ~');
        otherwise
            disp('~ その他の場合 ~')
    end
end
>どう直したら実行されるのか
下記の様な書き方で実行可能です。比較対象を複数個に出来ます。ドキュメントには下記の通り記載されています。
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
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
