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

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



10
大なり/小なりの切り替えステートメント
だから私はこのようなswitch文を使いたい: switch (scrollLeft) { case (<1000): //do stuff break; case (>1000 && <2000): //do stuff break; } これらのステートメント(<1000)または(>1000 && <2000)のいずれかが機能しないことがわかりました(さまざまな理由で)。私が求めているのは、それを行う最も効率的な方法です。私は30個のifステートメントを使用するのが嫌いなので、代わりにスイッチ構文を使用します。何かできることはありますか?

18
なぜswitchステートメントを文字列に適用できないのですか?
次のコードをコンパイルすると、のエラーが発生しましたtype illegal。 int main() { // Compilation error - switch expression of type illegal switch(std::string("raj")) { case"sda": } } switchまたはで文字列を使用することはできませんcase。どうして?文字列をオンにするのと同様のロジックをサポートするためにうまく機能する解決策はありますか?

19
C#でif / elseとswitch-caseを使用する間に大きな違いはありますか?
switchステートメントif/elseとC#を使用する場合の利点/欠点は何ですか。コードの外観以外に、それほど大きな違いがあるとは思えません。 結果のILまたは関連するランタイムパフォーマンスが根本的に異なる理由はありますか? 関連:文字列をオンにするか、タイプを別の方法でオンにする方が速いですか?

8
有効ですが、スイッチケースの価値のない構文?
少しタイプミスをして、私は誤ってこの構成を見つけました: int main(void) { char foo = 'c'; switch(foo) { printf("Cant Touch This\n"); // This line is Unreachable case 'a': printf("A\n"); break; case 'b': printf("B\n"); break; case 'c': printf("C\n"); break; case 'd': printf("D\n"); break; } return 0; } と思われるprintfの一番上のswitch文が有効でなく、完全に到達不能です。 到達できないコードについての警告さえないまま、クリーンなコンパイルを取得しましたが、これは無意味なようです。 コンパイラはこれに到達できないコードとしてフラグを立てるべきですか? これは何か目的を果たしますか?


12
スイッチでnullを使用する方法
Integer i = ... switch (i){ case null: doSomething0(); break; } 上記のコードでは、switch caseステートメントでnullを使用できません。どうすればこれを別の方法で実行できますか?他のことdefaultをしたいので使えません。

2
JavaScriptでは、switchステートメントから戻ることは、breakを使用するよりも良い方法と考えられていますか?
オプション1-リターンを使用して切り替える: function myFunction(opt) { switch (opt) { case 1: return "One"; case 2: return "Two"; case 3: return "Three"; default: return ""; } } オプション2-ブレークを使用して切り替える: function myFunction(opt) { var retVal = ""; switch (opt) { case 1: retVal = "One"; break; case 2: retVal = "Two"; break; case 3: retVal …

7
JavaScriptでの文字列照合のSwitchステートメント
次の条件付きのswtichを作成するにはどうすればよいですか? URL が含まれている場合「foo」 settings.base_urlは「bar」です。 以下は必要な効果を達成していますが、これはスイッチでより管理しやすいと感じています。 var doc_location = document.location.href; var url_strip = new RegExp("http:\/\/.*\/"); var base_url = url_strip.exec(doc_location) var base_url_string = base_url[0]; //BASE URL CASES // LOCAL if (base_url_string.indexOf('xxx.local') > -1) { settings = { "base_url" : "http://xxx.local/" }; } // DEV if (base_url_string.indexOf('xxx.dev.yyy.com') > -1) { settings = { …

5
フォールスルー付きのスイッチケース?
Bashのフォールスルーケース(理想的には大文字と小文字を区別しない)でのswitchステートメントの正しい構文を探しています。PHPでは、次のようにプログラムします。 switch($c) { case 1: do_this(); break; case 2: case 3: do_what_you_are_supposed_to_do(); break; default: do_nothing(); } 私はバッシュでも同じようにしたいです: case "$C" in "1") do_this() ;; "2") "3") do_what_you_are_supposed_to_do() ;; *) do_nothing(); ;; esac これはどういうわけか機能しませんdo_what_you_are_supposed_to_do()。$ Cが2 OR 3のときに関数を実行する必要があります。

10
Switchステートメント:デフォルトは最後のケースでなければなりませんか?
次のswitchステートメントを検討してください。 switch( value ) { case 1: return 1; default: value++; // fall-through case 2: return value * 2; } このコードはコンパイルされますが、C90 / C99に対して有効(=定義済みの動作)ですか?デフォルトのケースが最後のケースではないコードを見たことがありません。 編集: として、ジョン・ケージとKillianDS書き込み:これは本当に醜いと混乱のコードであり、私はそれをよく知っています。一般的な構文(定義されているか?)と期待される出力に興味があります。

23
if-elseステートメントを切り替える利点
switchステートメントを使用する場合と、約10のアクションが予想される(現在は同じアクションである)列挙型if30 に対してステートメントを使用する場合のベストプラクティスは何ですかunsigned。パフォーマンスとスペースを考慮する必要がありますが、重要ではありません。スニペットを抽象化したので、命名規則を気にしないでください。 switch ステートメント: // numError is an error enumeration type, with 0 being the non-error case // fire_special_event() is a stub method for the shared processing switch (numError) { case ERROR_01 : // intentional fall-through case ERROR_07 : // intentional fall-through case ERROR_0A : // intentional fall-through case ERROR_10 …


8
コントロールは1つのケースラベルから抜けることができません
存在する検索テキストボックスに応じて、検索フィールドに検索語を入力するスイッチステートメントを記述しようとしています。次のコードがあります。しかし、「1つのケースラベルからコントロールを通過できない」というエラーが発生します。 switch (searchType) { case "SearchBooks": Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText); Selenium.Click("//*[@id='SearchBooks_SearchBtn']"); case "SearchAuthors": Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText); Selenium.Click("//*[@id='SearchAuthors_SearchBtn']"); } コントロールは1つのケースラベル(case "SearchBooks":)から別のケースラベルに移動できません コントロールは1つのケースラベル(case "SearchAuthors":)から別のケースラベルに移動できません

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