我有一个国际象棋益智游戏。
我想在枚举中设置错误的方块。
enum 1000H1wrong {11, 13, 15 21, 22};
我可以查看一个号码是否在整个枚举1000H1中。
if chesssquare == enum 1000H1wrong { }
与此相同:
if ((chesssquare == 11) || (chesssquare == 13) || (chesssquare == 15) || (chesssquare == 21) || (chesssquare == 22)) { }
答案 0 :(得分:4)
请改用NSArray。为了检查它是否包含数字:
NSArray *1000H1wrong = [NSArray arrayWithObjects: @11, @13, @15 @21, @22, nil];
[1000H1wrong containsObject: @(chesssquare) ];
答案 1 :(得分: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!)