Есть ли способ изменить регистры внутри оператора switch? - PullRequest
0 голосов
/ 31 января 2019

Итак, я работаю над оператором switch и мне было интересно, можно ли изменить регистр для конкретного действия.

Допустим, у меня есть это:

var check0 = false;
var check1 = false;

switch(stage){

    case "0":
        rect(10,10,10,10);
        check0 = true;
        break;
    case "1":
        if(check0 === true){
            rect(20,20,20,20);
            check1 = true;
            break;
        }else{
            /* How to set case 0 ? */
            //stage = 0; //Doesnt work
            //stage = "0"; //Doesn't work
        }
        break;
}

Ответы [ 4 ]

0 голосов
/ 31 января 2019

Попробуйте это:

var check0 = false, check1 = false;

function checkSet(stage){
  switch(stage){
    case 0:
      //rect(10,10,10,10);
      check0 = true;
      return;
    case 1:
      if(check0 === true){
        //rect(20,20,20,20);
        check1 = true;
        return;
      }
      else{
        checkSet(0);   
      }
      return;
  }
}

console.log(check0); checkSet(1); console.log(check0);
0 голосов
/ 31 января 2019

Обертывание в функции:

var check0 = false;
var check1 = false;
function checkFunc(stage) {
  switch(stage){
    case "0":
      rect(10,10,10,10);
      check0 = true;
      break;
    case "1":
      if(check0 === true){
        rect(20,20,20,20);
        check1 = true;
        break;
      }else{
        checkFunc("0")
      }
      break;
  }
}
checkFunc("1");
0 голосов
/ 31 января 2019

Для этого вы можете использовать метод @Tarun Khurana и @Artee предложили или реорганизовали дела так, чтобы case "1" находился поверх case "0", но ломается только при выполнении условия:

switch(stage){
    case "1":
        if(check0 === true){
            rect(20,20,20,20);
            check1 = true;
            break;
        } 
    // case "0" is executed since there is no break statement
    case "0":
        rect(10,10,10,10);
        check0 = true;
        break;
}
0 голосов
/ 31 января 2019

var check0 = false;
var check1 = false;

function xyz(stage){
    switch(stage){

        case "0":
           rect(10,10,10,10);
           check0 = true;
           break;
        case "1":
           if(check0 === true){
               rect(20,20,20,20);
               check1 = true;
                break;
            }else{
            xyz(0)
            }
          break;
    }
}
...