从我的应用程序(游戏)的每个级别调用以下内容
伪代码示例
public void checkCollisions(){
if (someCondition)
do something
else if (someCondition2)
do something2
else if (someCondition3)
do something3
}
这样称呼:
mainGame.checkCollisions();
但是,在选定的级别中,我需要抛出一个额外的条件,所以不要像..........那样重复整个方法。
public void checkCollisions2(){
if (someCondition)
do something
else if (someCondition2)
do something2
else if (someCondition3)
do something3
else if (someCondition4)
do something4
}
然后将其称为..........
mainGame.checkCollisions2();
我需要找到一种方法来更有效地做到这一点(我确定有一个)我能想到的唯一方法是接受一个布尔值然后执行第四个条件(或不执行)取决于什么布尔值的值是,但这似乎也不是一种很好的方式(例如,如果我想在将来添加更多条件)。
这必须是'else if'语句,所以除了原始方法之外,我不能把它放到一个单独的方法中。
选项将不胜感激
答案 0 :(得分:4)
让checkCollisions
返回boolean
,表明它是“做了什么”。
public boolean checkCollisions(){
boolean didSomething = false;
if (someCondition) {
doSomething();
didSomething = true;
}
else if (condition2) {
doSomething2();
didSomething = true;
}
else if (condition3){
doSomething3();
didSomething = true;
}
return didSomething;
}
然后,checkCollisions2
可以调用checkCollisions
并检查它是否有所作为。然后您的else if
可以正常工作:
public void checkCollisions2(){
if (checkCollisions()) {
// Yes, something was done!
}
else if (condition4) {
doSomething4();
}
}
或更短:
public void checkCollisions2(){
if (!checkCollisions() && condition4) {
doSomething4();
}
}