0

我有一个国际象棋益智游戏。

我想在枚举中设置错误的方块。

enum 1000H1wrong {11, 13, 15 21, 22};

我可以检查一下 ENTIRE 枚举 1000H1 中是否有一个数字是错误的。

if chesssquare == enum 1000H1wrong {        }

与此相同:

if ((chesssquare == 11) || (chesssquare == 13) || (chesssquare == 15)    || (chesssquare == 21) || (chesssquare == 22)) {      }
4

2 回答 2

4

请改用 NSArray。为了检查它是否包含数字使用:

NSArray *1000H1wrong = [NSArray arrayWithObjects: @11, @13, @15 @21, @22, nil];
[1000H1wrong containsObject: @(chesssquare) ];
于 2012-12-24T16:06:03.087 回答
0

没有自动方法来检查一系列枚举值中的成员资格。您可以按照 giorasch 的建议将它们放入 NSSet 中。但我的偏好是使用直接的 C 数组:

static int squares1001H1wrong[] = {11, 13, 15, 21, 22};

#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))

static BOOL isInSquares1001H1wrong(int square)
{
    for (int i = 0; i < ARRAY_SIZE(squares1001H1wrong); ++i)
        if (squares1001H1wrong[i] == square)
            return YES;
    return NO;
}

该数组是在编译时构造的,而不是在运行时构造的。不构造任何对象。测试是在没有单个方法调用的情况下进行的。

Objective-C 是 C 语言的超集。学习 C 以获得 Objective-C 的全部功能。有关避免 NSDictionary 元素的 NSArray 的示例,请参阅Objective-C Is Still C (Not Java!)

于 2012-12-24T20:57:50.060 回答