2011-06-05 127 views

回答

3

不是。

另一種方法是:

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

但它不是 「更快」!

+0

這可能是一個更有效的方法,這可能是我應該使用的單詞。我會研究開關。謝謝。 – Andrew 2011-06-05 13:00:49

+0

@Andrew告訴我你對我的答案的看法。 – 2011-06-05 13:03:51

+0

Downvoter:爲什麼? – 2011-06-05 13:06:44

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)) ... 

編譯器將很可能還是那些常量一起在編譯的時候,所以比較全僅需只要按位與操作。

+0

第二個代碼段與這個問題有什麼關係? – 2011-06-05 13:26:44

+0

除非數字集合包含每個單獨的數字,並且這些比特集合中的任何一個都不可能實現,否則基於比特的方法將會完全錯誤。 – smorgan 2011-06-05 14:37:34

+0

@smorgan,我想你誤解了。也許我應該這樣寫:'(1 << 1 | 1 << 3 | 1 << 6)'。如果值介於0到63之間,這個方法是可行的,可能更多,而且這通常是一個非常有用的集合。 – Caleb 2011-06-05 20:22:39