有没有其他方法可以创建条件执行?
方式1:明显使用“if”
if(condition)
{
doThis();
}
else
{
doThat();
}
方式2:使用“?”的其他直接方法
(condition) ? doThis():doThat();
方式3:这使用“while”
boolean test=condition;
while(test)
{doThis(); break;}
while(!test)
{doThat(); break;}
方式4:这使用“for”
for(;condition;) { doThis(); break; }
for(;!condition;) { doThat(); break; }
方式5:这使用“开关”
switch(condition) { case 0: doThat();break; default: doThis();break;}
还有其他想法吗? 是否有可能没有条件关键字的选择执行路径?
这是一个社区维基
答案 0 :(得分:4)
您可以使用快捷逻辑。
boolean b = (condition && doThis()) || (!condition && doThat());
答案 1 :(得分:2)
这可以解决问题:
x.play();
alert("this gets alerted if x is defined and has a method play()");
答案 2 :(得分:1)
假设条件给出零或一:
typedef void (*fn)(void);
fn options[2] = { doThis, doThat };
(*option[condition]) ();
答案 3 :(得分:1)
多种方式,一种方法是将代码/例程“加载”到某种类型的内存中(数组,向量),然后根据用户操作加载该代码并运行它。一个简短的伪示例:
假设你正在编写一个游戏,某个地方你有这样的东西:
if(IS_KEY_PRESSED_DOWN('A')) {
//code to move left
}
if(IS_KEY_PRESSED_DOWN('D')) {
//code to move right
}
您可以制作地图/数组,而不是拥有它:
function moveLeft() {
//move left
}
function moveRight() {
//move left
}
actions['A'] = moveLeft;
actions['D'] = moveRight;
for(var key in keys_pressed) {
actions[key](); //there the variable "actions" is an array of functions.
}
答案 4 :(得分:1)
Java ..你,呃,你问过它:
static class TrueException extends RuntimeException {}
static class FalseException extends RuntimeException {}
private static Map<Boolean, RuntimeException> map = new HashMap<Boolean, RuntimeException>();
static {
map.put(true, new TrueException());
map.put(false, new FalseException());
}
public static void main(String[] args) {
try {
throw map.get(condition);
} catch (TrueException te) {
doThis();
} catch (FalseException fe) {
doThat();
}
}
答案 5 :(得分:0)
您可以使用面向对象的行为和多态来删除条件语句。这可以通过任意数量的行为设计模式来实现。状态和模板方法是我经常使用的两种方法。
答案 6 :(得分:0)
嗯,你可以有一个标签列表并使用臭名昭着的goto语句。我是一个指数
goto labels[i]