2011-12-16 8 views
2

if文を使用せずにswitch case構造体を使って1つの整数を別の整数と比較する方法はありますか?Switch Case To/between

など。

switch(integer) { 
    case 1 to 10: 
     break; 
    case 11 to 20: 
     break; 
    case 21 to 30: 
     break; 
} 
+0

号さて、あなたは 'かもしれないスイッチ(整数<10){場合、真:....} '(これは' switch 'を通して整数を別のものと比較している)しかし、私はそれが役に立たないと思う。 –

+0

ああ。 if(整数<= 10)などと比べて読みやすく、コーディングする方がはるかに簡単に思えるので尋ねました。私は以前のどこかの構文を見たことがありますが、どこで何のために忘れてしまいます。 –

答えて

3

私のコメントで述べたように、あなたはそれを行うことはできません。

function inRange(x, min, max) { 
    return min <= x && x <= max; 
} 

if - else ifとそれを一緒に使用します。ただし、inRange関数を定義することができます。それはそれは非常に読みやすくするために行う必要があります「クール」構文について

if(inRange(integer, 1, 10)) { 

} 
else if(inRange(integer, 11, 20)) { 

} 

//... 
0

投稿:P

if(integer in range(0, 10)) { 

} 
else if (integer in range(11, 20)) { 



} 
else if (integer in range(21, 30)) { 



} 

function range(min, max){ 
var o = {}, i ; 
    for(i = min; i <= max; ++i) { 
    o[i] = !0; 
    } 
return o; 
} 
+1

なぜ 'o [i] =!0'は' o [i] = true'よりも優れていますか?涼しいですか? ;)これのようなオブジェクトを毎回作成するのは無駄だと思われますが、この方法で 'in 'を使うことは創造的です。 –

+0

@FelixKling yeah:D範囲の構文にその甘い整数を持たなければ、本当の意味で使用することはできません – Esailija

+2

私はあなたに「創造性のための仮想」+1を与えます) –

4

をあなたには、いくつかの数学の操作を行うことができます。

switch(Math.ceil(integer/10)) { 
    case 1: // Integer is between 1-10 
     break; 
    case 2: // Integer is between 11-20 
     break; 
    case 3: // Integer is between 21-30 
     break; 
} 
+0

それは素晴らしいです!ケースを素早くシンプルに保ちます。 – daGUY

2

はい、あります。私は、私は自分のコードであれば/他の構造を使用すると思いますかなり確信していますが、スイッチを使用することに熱心なら、次は動作します:あなたがすることを避けるために望んでいた場合はもちろん

switch(true) { 
    case integer >= 1 && integer <= 10: 
     // 1-10 
     break; 
    case integer >= 11 && integer <= 20: 
     // 11-20 
     break; 
    case integer >= 21 && integer <= 30: 
     // 21-30 
     break; 
} 

あなたはブール値を返すとするために、独自のisInRange(num,min,max)タイプの関数を定義することができ、すべてのケースのコード>= && <=は言う:

switch (true) { 
    case isInRange(integer,1,10): 
     // 1-10 
     break; 
    // etc 
}