我想在Objective C中做一个简单的检查:
if ((spriteA.tag == 4 && spriteB.tag == 10)) {
}
但是,我正在努力完成 1 if
检查,同时实现以下目标:
if ((spriteA.tag == 4 && spriteB.tag == 10,11,12,13,14,15,16,17)) {
}
现在我知道我可以使用||
运算符,但这会使 1 if
检查多行代码,因此看起来难以辨认。现在是否有任何有组织的方式来实现我想要做的事情?
谢谢!
答案 0 :(得分:1)
最简单的方法可能是制作一个掩码int spriteBtags = (1 << 10) | (1 << 11) | (1 << 12) | ...;
,然后用(1 << spriteB.tag) & spriteBtags
进行测试。但请注意,此方法将spriteB.tag的值限制为int或long中的位数。当然,你有很长的陈述来创建spriteBtags
,但那是一次性的任务。
像Pascal这样的其他语言有位集,这使得这种事情更直接。
(您至少可以通过编写varargs函数来隐藏赋值语句的复杂性:int spriteBtags = createIntBitset(10,11,12,...17,-1);
)
答案 1 :(得分:1)
使用类似枚举的值,switch
语句可能很有用:
switch(spriteB.tag) {
case 4:
case 10:
case 12:
case 17:
case 42:
...
break;
}