タグ付けされた質問 「switch-statement」

コンピュータプログラミングでは、switch、case、select、またはinspectステートメントは、変数の内容に基づいてコードの特定のブロックを呼び出すために使用される一種の選択制御メカニズムです。


30
Pythonのswitchステートメントの置き換えですか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 入力インデックスの値に基づいてさまざまな固定値を返す関数をPythonで記述したいと思います。 他の言語ではswitchor caseステートメントを使用しますが、Pythonにはステートメントがないようswitchです。このシナリオで推奨されるPythonソリューションは何ですか?


23
変数をswitchステートメントで宣言できないのはなぜですか?
私はいつもこれを疑問に思っていました-なぜswitchステートメントのcaseラベルの後に変数を宣言できないのですか?C ++では、ほとんどどこでも変数を宣言できます(そして、最初の使用に近い変数を宣言することは明らかに良いことです)が、以下はまだ機能しません。 switch (val) { case VAL: // This won't work int newVal = 42; break; case ANOTHER_VAL: ... break; } 上記は私に次のエラー(MSC)を与えます: 「newVal」の初期化は「case」ラベルによってスキップされます これは他の言語でも制限があるようです。なぜこれがそのような問題なのですか?

21
JavaScriptでのswitchステートメントの複数のケース
JavaScriptのswitchステートメントで複数のケースが必要です、次のようなもの: switch (varName) { case "afshin", "saeed", "larry": alert('Hey'); break; default: alert('Default case'); break; } どうやってやるの?JavaScriptでそのようなことを行う方法がない場合は、DRYの概念にも従う代替ソリューションを知りたいです。

18
switchステートメントの複数のケース
case value:繰り返し述べることなく、複数のケースステートメントを通過する方法はありますか? 私はこれがうまくいくことを知っています: switch (value) { case 1: case 2: case 3: // Do some stuff break; case 4: case 5: case 6: // Do some different stuff break; default: // Default stuff break; } しかし、私はこのようなことをしたいと思います: switch (value) { case 1,2,3: // Do something break; case 4,5,6: // Do something …

14
C#でのswitchステートメントのフォールスルー?
スイッチステートメントのフォールスルーは、構成を愛することとswitch対比することの私の個人的な主な理由の1つですif/else if。ここに例を示します。 static string NumberToWords(int number) { string[] numbers = new string[] { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; string[] tens = new string[] { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; string[] teens = new string[] { "ten", "eleven", "twelve", …

30
これよりも「タイプをオンにする」より良い代替策はありますか?
switchタイプにはC#を使用できないと見なして(is関係が複数の異なるものcaseが適用される可能性があるため、特別なケースとして追加されていません)、これ以外のタイプの切り替えをシミュレートするより良い方法はありますか? void Foo(object o) { if (o is A) { ((A)o).Hop(); } else if (o is B) { ((B)o).Skip(); } else { throw new ArgumentException("Unexpected type: " + o.GetType()); } }

3
各 'when'ブロックに複数の値を持つCaseステートメント
私が探しているものを説明できる最善の方法は、これまでに試した失敗したコードを示すことです。 case car when ['honda', 'acura'].include?(car) # code when 'toyota' || 'lexus' # code end when考えられる約50の異なるの値によって引き起こされる4つか5つの異なる状況がありますcar。caseブロックでこれを行う方法はありますか、または大規模なifブロックを試す必要がありますか?

11
1つのswitch caseステートメントに2つの値を使用する
私のコードでは、プログラムはユーザーが入力したテキストに応じて何かを行います。私のコードは次のようになります: switch (name) { case text1: { //blah break; } case text2: { //blah break; } case text3: { //blah break; } case text4: { //blah break; } しかし、ケース内のコードtext1とはtext4同じです。したがって、私は次のようなものを実装することが可能かどうか疑問に思っていました case text1||text4: { //blah break; } ||演算子がcaseステートメントで機能しないことはわかっていますが、使用できる同様のものがあります。

4
隣接するintのJavaスイッチが、ケースを追加するとより速く実行されるように見えるのはなぜですか?
メインプログラムロジックの多くのポイントで呼び出されるホット関数で実行されるため、高度に最適化する必要があるいくつかのJavaコードに取り組んでいます。このコードの一部には、double変数10を任意の非負int exponentのsに乗じることによって乗算することが含まれます。(編集:なく最速、下記アップデート2参照)を一つの早道乗算値を取得するには、にあるswitchにexponent: double multiplyByPowerOfTen(final double d, final int exponent) { switch (exponent) { case 0: return d; case 1: return d*10; case 2: return d*100; // ... same pattern case 9: return d*1000000000; case 10: return d*10000000000L; // ... same pattern with long literals case 18: return d*1000000000000000000L; default: throw …


6
Java:サブクラスの下の列挙型でswitchステートメントを使用する
最初に、私はC#の列挙型にかなり慣れていることを述べます。Javaの列挙型はかなり混乱しているようです。 ご覧のとおり、次の例ではswitchステートメント@ enumsを使用しようとしていますが、何をしている場合でも常にエラーが発生します。 私が受け取るエラーは: 修飾されたケースラベルSomeClass.AnotherClass.MyEnum.VALUE_Aは、修飾されていない列挙型定数で置き換える必要がありますVALUE_A 問題は私がエラーを完全に理解していることですが、列挙型が別のサブクラスにあるため、VALUE_Aを書き込むことはできません。この問題を解決する方法はありますか?そして、なぜそれがJavaで起こっているのですか? //Main Class public class SomeClass { //Sub-Class public static class AnotherClass { public enum MyEnum { VALUE_A, VALUE_B } public MyEnum myEnum; } public void someMethod() { MyEnum enumExample //... switch (enumExample) { case AnotherClass.MyEnum.VALUE_A: { <-- error on this line //.. break; } …

21
switchステートメントには常にデフォルト句を含める必要がありますか?
私が最初に行ったコードレビューの1つ(しばらく前)で、すべてのswitchステートメントにdefault句を含めることをお勧めします。私は最近このアドバイスを思い出しましたが、正当化が何であったか思い出せません。今の私にはかなり奇妙に聞こえます。 デフォルトのステートメントを常に含める理由はありますか? この言語に依存していますか?当時使用していた言語を覚えていません-これは一部の言語に適用され、他の言語には適用されませんか?

12
「切り替え」は「if」より高速ですか?
switchステートメントは実際にはステートメントよりも高速ifですか? 以下のコードをVisual Studio 2010のx64 C ++コンパイラーで/Oxフラグを付けて実行しました。 #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_COUNT (1 << 29) size_t counter = 0; size_t testSwitch() { clock_t start = clock(); size_t i; for (i = 0; i < MAX_COUNT; i++) { switch (counter % 4 + 1) { case 1: counter += …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.