2011-06-05 7 views
0

if文を素早く入力する方法は?

if (value1 == 1 || value1 == 3 || value1 == 6) { 
//Things happen 
} 

それはVALUE1を毎回参照ですので、これを行うための迅速な方法があります...私は持っていると言いますか?

答えて

3

実際はありません。

switch (value1) 
{ 
case 1: 
case 3: 
case 6: 
    // Things happen 
} 

しかし、それは "より速く" ではありません。

代替です!

+0

これはおそらくもっと効率的な方法です。これはおそらく私が使ったはずの単語です。私はスイッチを調べます。ありがとう。 – Andrew

+0

@Andrew私の答えについてどう思いますか教えてください。 –

+0

Downvoter:なぜか? –

2

あなたは、switchステートメントを使用することができます。

switch (value1) 
    { 
     case 1: 
     case 3: 
     case 6: 
     //Things happen 
     break; 
     case 4: 
     //Something else happens 
     break; 
     default: 
     //Something else happens 
    } 

あなたがそうでなければ、同じ変数をチェックするif文の多くを持っているつもりだった場合、これは便利です。あなたが何かやって意味場合

1

if (value1 in {1, 3, 6}) ... 

をその後、いや、あなたはそのような何かを行うことはできません。 Objective-Cには基本型の集合演算子は一切ありません。ただし、コードを書く方法は他にもあります。同様の操作をすばやく行うことができます。可能な値の数があまり大きくない場合たとえば、あなたはビット位置を使用することができます。

if (value1 & (0x02 | 0x08 | 0x20)) ... 

コンパイラはおそらく、OR、コンパイル時に一緒にこれらの定数、全体の比較としてだけの時間がかかるので、ビット単位のAND演算。

+0

2番目のコードスニペットはどのように質問に関係していますか? –

+0

数字のセットに、それらのビットのいずれかが設定された単一の数値がすべて含まれていない限り、本質的に不可能であるとは考えにくいですが、ビットベースのアプローチは完全に間違っています。 – smorgan

+0

@smorgan、私はあなたが誤解していると思います。多分、私はこれを次のように書いたはずです。 '(1 << 1 | 1 << 3 | 1 << 6)'。この方法は、値の範囲が0〜63、おそらくそれ以上の場合には実用的です。これはしばしば非常に有用なセットです。 – Caleb

関連する問題