ここに初心者の質問範囲?論理か?目的のC
値の範囲、具体的にタグに関連したいIf文を書いているのなら、Logical OR以外にも簡単な方法がありますか?
if (tableView.tag == 1 || tableView.tag==2 || tableView.tag==3) { do something}
これは
ここに初心者の質問範囲?論理か?目的のC
値の範囲、具体的にタグに関連したいIf文を書いているのなら、Logical OR以外にも簡単な方法がありますか?
if (tableView.tag == 1 || tableView.tag==2 || tableView.tag==3) { do something}
これは
if (tableView.tag >= minRange && tableView.tag <= maxRange)
{
}
を比較効率の少数のために本当に考慮事項ではない...「簡単に」のあなたの定義に依存..非常に効率的では見えません。個々の値をテストするか、または値が連続している場合は、>=
および<=
のテストを実行します。あなたはいつも例えば、あなたが好きなら、物事を整理するために、マクロ、またはインライン関数を使用することができます。
NS_INLINE BOOL inRange(lower, value, upper) { return (lower <= value) && (value <= upper); }
大きなテストの番号、または単に美学のために、他の方法は、ビットマスクと配列を使用しています。
連続した値が32または64までの小さい数をテストする場合は、テストするセットのビットマスクを定義し、ビット単位および演算を実行できます。例:
typedef enum { Sunday = 0, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } Day;
int WeekendSet = (1 << Sunday | 1 << Saturday);
if ((1 << day) & WeekendSet) // day is a weekend
大規模ではあるがまだ大きすぎないセットでは、配列を使用できます。標準ライブラリisletter()
、isdigit()
などの機能が定義されることがあります。 1バイト文字は255以下であるため、256要素のブール値の静的配列を宣言すると、かなりうまく動作します。例えば。
static uint8 isADigit[] = { 0, 0, ..., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, ... }; // 256 values, only 10 1's for position's '0' through '9'
if (isADigit[myChar]) // myChar is a digit
あなたがテストしている値は整数型である場合は、フォールスルーでswitch
を使用することができます。
switch(tableView.tag) {
case 1:
case 2:
case 3:
// do something
break;
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
// do something else
break;
}
残念ながら、パスカルに似IN'演算子 'にあります。この機能を持つ言語はごくわずかです。 –