素朴な疑問なのですが、
ゲームでAIを作ろうと思い、Switch文を使って、
条件下で行動を振り分けをしたいと思ったのですが、
Switch文でグーグル検索をすると、
Switch文は使うなというサイトがそこそこ出てくるのですが、
「何が問題なのか」
親切な方がいらっしゃいましたら教えていただけたら幸いですm(_ _)m
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
Switch文は使うなというサイト
には
「何が問題なのか」
が書かれていないのでしょうか?
とりあえず,
- 書かれている場合 → それがそのサイトの主張というだけ.
- 書かれていない場合 → その話は読むに値しない(かも)
という感じ.
それはそれとして,ちょろっとググってみると…
(1)
「breakを付け忘れるとバグるから…」とかいう話を目にしますが,
個人的には,本当に実際にそんなバグを本当に生み出しているならそれは書いている奴が馬●なだけでは? としか思えません.
それを理由として「使うな」と言っているとしたら,それは,
ifに関して,
if( condition ) process1; process2; //これはいつ実行されるのが本当の意図?
みたく書いてしまえるから,「ifは危険!使うな!」
とか言っているのと大差ないレベルの話であり,そんな主張は読むに値しません.
(2)
「同じ条件による分岐が複数個所に現れる場合に,それらをswitchで書いていると,保守が大変になる」から,そういう場合には他の手段でやる方が良い場合もある,といったような話は,読むに値すると思います.
「使うな」ではなく,「場面に応じて他の手段と使い分けろ」であるべき.
switchで書けば全てが上手くいく場面であれば,switchを用いるのが良い.
投稿2020/06/25 01:52
編集2020/06/25 01:57総合スコア11996
0
ベストアンサー
C言語系のswitch
には、フォールスルーという直感的でない挙動があります。
C
1switch(value){ 2 case 1: 3 処理1; 4 case 2: 5 処理2; 6}
このように書くと、case 1
に入った場合、そのまま下まで通り抜けて処理2;
も実行されてしまいます。
ただし、C#を使う場合、フォールスルーするswitch
はコンパイルエラーになってくれますので、C#では変なハマり方をするリスクは低いです。
投稿2020/06/24 12:02
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/24 12:10
2020/06/24 12:18
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。