测验。条件没有条件关键字?

时间:2012-03-22 20:37:52

标签: conditional-statements

有没有其他方法可以创建条件执行?

方式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;}

还有其他想法吗? 是否有可能没有条件关键字的选择执行路径?

这是一个社区维基

7 个答案:

答案 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]