2

質問があり、答えを見つけることができませんでした。Objective-Cで次の式を減らす方法はありますか?

if ((r != 1) && (r != 5) && (r != 7) && (r != 12)) {
   // The condition is satisfied
}else{
   // The condition isn't satisfied
}

例(機能していません):

if (r != (1 || 5 || 7 || 12)) {
   // The condition is satisfied
}else{
   // The condition isn't satisfied
}

ありがとう!

4

2 に答える 2

4

NSSet次のように使用できます。

NSSet *prohibited = [NSSet setWithArray:@[@1, @5, @7, @12]];
if (![prohibited containsObject:[NSNumber numberWithInt:r]]) {
    // The condition is satisfied
} else {
    // The condition isn't satisfied
}

例のように、数値のセットに固定された数値のグループが含まれている場合は、NSSet *prohobited上記の例のように毎回行うのではなく、静的変数を作成して1回初期化できます。

于 2012-12-31T00:20:25.410 に答える
0

switchこのように使用することもできます

switch (r)
{
    case 1:
    case 5:
    case 7:
    case 12:
        // r is having 1,5,7 or 12
        break;
    default:
        // r is having other values
}
于 2012-12-31T06:18:09.940 に答える