Objective c 最小化重复代码?
我试图在目标C中做一个简单的检查,如下所示:Objective c 最小化重复代码?,objective-c,ios,optimization,repeat,Objective C,Ios,Optimization,Repeat,我试图在目标C中做一个简单的检查,如下所示: if ((spriteA.tag == 4 && spriteB.tag == 10)) { } 但是,我正在尝试完成1if检查,同时实现以下目标: if ((spriteA.tag == 4 && spriteB.tag == 10,11,12,13,14,15,16,17)) { } 现在我知道我可以使用|操作符,但如果检查多行代码,使其看起来难以辨认,则会使1。现在有没有什么有组织的方式来实现我想要做的事情
if ((spriteA.tag == 4 && spriteB.tag == 10)) {
}
但是,我正在尝试完成1if
检查,同时实现以下目标:
if ((spriteA.tag == 4 && spriteB.tag == 10,11,12,13,14,15,16,17)) {
}
现在我知道我可以使用|
操作符,但如果检查多行代码,使其看起来难以辨认,则会使1。现在有没有什么有组织的方式来实现我想要做的事情
谢谢 最简单的方法可能是使用类似枚举的值制作一个位掩码int-spriteBtags=(1),一个开关
语句可能有用:
switch(spriteB.tag) {
case 4:
case 10:
case 12:
case 17:
case 42:
...
break;
}
spriteA.tag==4&&spriteB.tag>=10&&spriteB.tag我最喜欢@danieldischer方法(我不知道你能这么做),因为它不需要使用更多的代码行(创建nsset)但是,它与构成一个范围的允许值相关联。如果情况并非总是如此,那么就应该使用集合。更具体地说,如果您选择该路线,您可能希望查看NSIndexSet
。同样,如果您编写一个描述测试含义的命名方法或函数,它的可读性会更高。类似于 如果(spriteswerprocessed(spriteA.tag,spriteB.tag)){…}
然后BOOL-spriteswerprocessed(int-tagA,int-tagB){BOOL-tagA-processed=(tagA==kPassedTest);BOOL-tagB-processed=(tagB>=kTestMin&&tagB