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

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

5
ifとスイッチ速度
コンパイラの最適化により、switchステートメントは通常、同等のif-else-ifステートメントよりも高速です(この記事で説明されているように)。 この最適化は実際にはどのように機能しますか?誰か良い説明はありますか?

13
数値を月名に変換するスイッチケースブロックを短縮する方法
これを少ない行で書く方法はありますが、それでも簡単に読むことができますか? var month = ''; switch(mm) { case '1': month = 'January'; break; case '2': month = 'February'; break; case '3': month = 'March'; break; case '4': month = 'April'; break; case '5': month = 'May'; break; case '6': month = 'June'; break; case '7': month = 'July'; break; case …

8
switchステートメントでenumを使用するJava
この質問に似たSOに関するさまざまなQ&Aを確認しましたが、解決策は見つかりませんでした。 私が持っているのは、テレビガイドを表示するさまざまな方法を表す列挙型です... NDroid Applicationクラス static enum guideView { GUIDE_VIEW_SEVEN_DAY, GUIDE_VIEW_NOW_SHOWING, GUIDE_VIEW_ALL_TIMESLOTS } ...ユーザーがビューを変更すると、イベントハンドラは intようなことをしたいと思います... Android Activity onClick(DialogInterface dialog, int which)イベントハンドラー // 'which' is an int from 0-2 switch (which) { case NDroid.guideView.GUIDE_VIEW_SEVEN_DAY: ... break; } C#の列挙型とselect / caseステートメントに慣れているため、上記のようなことが可能になり、Javaの動作が異なることはわかっていますが、必要なことを理解できません。 if声明に頼らなければならないのでしょうか?おそらく3つの選択肢しかないので、私はそれを行うことができますが、Javaでスイッチケースを使用してどのように実行できるのか疑問に思いました。 編集申し訳ありませんが、私はそれを一般的なJavaの問題であると見なしていたため、この問題を完全に拡張しませんでした。もう少し説明するために質問に追加しました。 Android固有のものはありません。そのため、Androidとしてタグ付けしませんでしたが、列挙型はApplicationクラス内で定義されており、スイッチに入れたくないコードはにありActivityます。複数のアクティビティからアクセスする必要があるため、列挙型は静的です。


2
switch()ステートメントの使用法
Rのswitchステートメントについて少し混乱しています。単に関数をググるだけで、次のような例が得られます。 スイッチの一般的な用途は、関数への引数の1つの文字値に従って分岐することです。 > centre <- function(x, type) { + switch(type, + mean = mean(x), + median = median(x), + trimmed = mean(x, trim = .1)) + } > x <- rcauchy(10) > centre(x, "mean") [1] 0.8760325 > centre(x, "median") [1] 0.5360891 > centre(x, "trimmed") [1] 0.6086504 ただし、これはif、それぞれに指定された一連のステートメントを持っていることと同じように見えますtype これで全部switch()ですか?誰かが私にさらなる例とより良いアプリケーションを与えることができますか?

3
JavaScriptのswitchステートメントで厳密な比較を想定しても安全ですか?
boolean falseまたは整数(0を含む)のいずれかである変数があります。私はそれを次のようなswitchステートメントに入れたいです: switch(my_var){ case 0: // Do something break; case 1: // Do something else break; case false: // Some other code } Google Chromeでのテストでは、問題なく動作するように見えますが、一部のブラウザでmy_varはfalse、の場合、最初のケースが実行される可能性があるため、使用するのが少し不安です0 == false。 JavaScriptに、switchステートメントで厳密な比較を使用するなどの公式の何かがあるかどうか疑問に思って0 !== falseいますが、自分では何も見つかりません。これが別のJavaScriptエンジンでうまく機能するかどうかはわかりません。switchステートメントによって行われる比較が厳密であることが保証されているかどうか誰かが知っていますか?

6
caseステートメントで{}を使用します。どうして?
使用してのポイントは何である{と}におけるcase文は?通常、caseステートメントの行数に関係なく、すべての行が実行されます。これは古い/新しいコンパイラに関するルールですか、それとも背後に何かありますか? int a = 0; switch (a) { case 0:{ std::cout << "line1\n"; std::cout << "line2\n"; break; } } そして int a = 0; switch (a) { case 0: std::cout << "line1\n"; std::cout << "line2\n"; break; }

1
Elm Compilerが永久に実行され、コンピュータが熱くなる
この問題の原因はわかりませんが、プロジェクトでは、コンパイラーがモジュールをコンパイルするだけで何時間もかかっています。私のコードベースの合計サイズは352KBですが、10KBを超えるモジュールはありません。私はネイティブポートを使用していますが、それは非常に簡単です。私はそれでフェッチDate.now()しています。 elmコンパイラのコンパイルに時間がかかる原因となる既知の問題はありますか?私は多くの依存関係はありませんが、Htmlをたくさん使用しています。これを引き起こす原因についてのヒントを本当にいただければ幸いです。 編集する したがって、ケース式が大きいと、オプティマイザに0.16のように長い時間がかかることがわかります。ここだエルムは、議論に議論の問題を育て、そして厄介なケースの試合の要旨は。 私は冗長で、ニンジンをそこに留めておくと思いますが、elmのコンパイラが大文字小文字を区別するためにこのルートをとるのはなぜですか?ここで起こっている基本的な機械は何ですか?コンパイラーがcaseステートメントで60以上のパターン一致を最適化するのに1時間以上かかるのはなぜですか?

6
Javaスイッチ内での変数の宣言と初期化
Javaスイッチについて、おかしな質問があります。 int key = 2; switch (key) { case 1: int value = 1; break; case 2: value = 2; System.out.println(value); break; default: break; } シナリオ1 - key2として、それが正常値を出力2である 私がコメントするつもりだ-シナリオ2 value = 2でcase 2:、それは言ってsquawks ローカル変数の値が初期化されていないかもしれません。 質問: シナリオ1:実行フローがに進まないcase 1:場合(の場合key = 2)、値変数の型はどのようにしてわかりintますか? シナリオ2:コンパイラーが値変数のタイプをとして認識している場合は、。(宣言と初期化)の式にintアクセスしている必要があります。では、なぜローカル変数の値が初期化されていない可能性があると言ってコメントするつもりなのでしょうか。int value = 1;case 1:value = 2case 2:


10
C#SwitchステートメントでIgnoreCaseを使用する方法
switch内のオブジェクトがstringであるswitch-caseステートメントがある場合、ignoreCase比較を実行することは可能ですか? 私は例えば持っています: string s = "house"; switch (s) { case "houSe": s = "window"; } ウィルs値「ウィンドウ」を取得?ignoreCaseを使用して文字列を比較するように、switch-caseステートメントをオーバーライドするにはどうすればよいですか?

15
Switchケース:1つの数字の代わりに範囲を使用できますか
スイッチを使いたいのですが、ケースが多いのですが、近道はありますか?これまでのところ、私が知って試した唯一の解決策は次のとおりです。 switch (number) { case 1: something; break; case 2: other thing; break; ... case 9: .........; break; } 私ができることを望んでいるのは、次のようなものです。 switch (number) { case (1 to 4): do the same for all of them; break; case (5 to 9): again, same thing for these numbers; break; }

17
それぞれの場合に値の範囲を含むswitchステートメントを使用していますか?
Javaでは、各ケースに複数の値が含まれるswitch文を書くことは可能ですか?たとえば、(ただし、次のコードは機能しませんが): switch (num) { case 1 .. 5: System.out.println("testing case 1 to 5"); break; case 6 .. 10: System.out.println("testing case 6 to 10"); break; } これはObjective Cで実行できると思います。Javaでも同様のことはありますか?またはif、else if代わりに、ステートメントを使用する必要がありますか?

3
var / nullの奇妙な動作で切り替える
次のコードがあるとします: string someString = null; switch (someString) { case string s: Console.WriteLine("string s"); break; case var o: Console.WriteLine("var o"); break; default: Console.WriteLine("default"); break; } switchステートメントが一致するのはなぜcase var oですか? (事実上)falseと評価されるため、case string s一致しないのは私の理解です。VS CodeのIntelliSense は、それも同様であると教えてくれます。何かご意見は?s == null(null as string) != nullostring 似ている:nullチェック付きのC#7スイッチケース

17
return付きのswitchステートメント—コードの正確さ
Cにほぼこの構造のコードがあるとします。 switch (something) { case 0: return "blah"; break; case 1: case 4: return "foo"; break; case 2: case 3: return "bar"; break; default: return "foobar"; break; } 明らかに、breaksはコードを正しく実行するために必要ではありませんが、私がそれらをそこに置かなければ、それは一種の悪い習慣のように見えます。 どう思いますか?削除しても大丈夫ですか?または、「正確さ」を高めるためにそれらを保持しますか?

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