Coldfusion вызывает другой случай в коммутаторе - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть переключатель, подобный следующему (записано в cfscript):

switch (something) {
  case "stuff":
    if(this eq that){
      writeDump("hello");
    } else { /* do other? */ }
    break;
  case "other":
    //do something else
    break;
}

В моем else я хочу быть в состоянии сказать ему, что я хочу, чтобы "другой" случай вызывался.Это возможно?(Кажется, я помню, как делал это на других языках.)

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

В CF нет конструкции GOTO, нет.И это в значительной степени то, что вы просите.

Если ваш переключатель действительно так прост, как вы указываете, и вы хотите перейти к следующему случаю, когда условие ложно, то, что вы могли бы do должен иметь оператор break в истинной ветви предложения if и не иметь оператора break в ложной ветви.Затем, когда запускается ложная ветвь, обработка не выйдет из случая, когда это будет сделано;это провалится в следующий случай.

4 голосов
/ 08 декабря 2011

Как объяснил Адам, возможно, вот некоторый код, чтобы показать, как:

something = "stuff";
test = "more stuff";

switch (something) {
case "stuff":
  if(test eq "more stuff"){
    writeOutput("<p>Something</p>");
    break;
  } 
case "other":
  writeOutput("<p>something Else</p>");
  break;
}

Измените значения «что-то» и «тест», чтобы увидеть разные результаты. При использовании переключателя в cfscript, если нет 'break', то ColdFusion продолжит обрабатывать случаи, пока не достигнет одного.

1 голос
/ 08 декабря 2011

Насколько я знаю, это невозможно.Вам нужно будет использовать оператор if else или вложенный is / else вместо ключа.

something = "other";

if (something eq "stuff" and 1 eq 2) {
    writeDump("hello");
} else if (something eq "other") {
    writedump("other");
}
...