满足条件时关闭状态检查?

时间:2014-05-11 10:15:52

标签: if-statement conditional-statements

当满足条件时,是否可以关闭检查条件以及如何实施(使用您选择的语言)?

示例:

假设一个if语句在更新函数中运行,我希望当语句在程序的生命周期中运行一次时不调用if语句。我想这可以通过将语句包装在函数变量(javascript)中然后重新分配该变量来实现,如果/当条件为真时返回void。

2 个答案:

答案 0 :(得分:0)

好吧,假设你有这个(C ++):

void update() {
  // code

  if (condition) {
    // code
  }  

  // code
}

你能做的是:

void update() {
  // code

  static bool already_ran = false;
  if (!already_ran && condition) {
    alreadu_ran = true;
    // code
  }  

  // code
}

static表示变量在函数调用中保留其值,在C / C ++中,逻辑运算符(本例中为&&)被短路。这意味着除非他们需要,否则他们不会评估第二个操作数。例如,如果!already_ranfalse,则无论false如何,整个表达式都为condition,因此不会评估condition

答案 1 :(得分:0)

不是100%确定这比使用简单条件运行increaseValue()函数更有效,但这里是我正在使用的代码,它似乎工作(至少在as3中)。更新被称为每秒约30次。

public function update(){
    if(isHit){ //isHit is part of another condition used by collision
        increaseValues = function() {
            this.height += 1;
            this.width += 1;
            this.x -= 1;
            this.y -= 1;
            this.alpha += -0.1;
            if (this.alpha == 0){
                increaseValues = function(){
                    return;
                }
            }
        }
    }
    increaseValues();
}