coldfusion在一个开关内调用另一个案例

时间:2011-12-08 10:52:24

标签: coldfusion switch-statement

我有一个像这样的开关(用cfscript编写):

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

在我的else中,我希望能够告诉它我想要调用“其他”案例。这可能吗? (我似乎记得在其他语言中这样做。)

3 个答案:

答案 0 :(得分:4)

CF中没有GOTO构造,没有。这就是你所要求的。

如果您的开关真的如您所指示的那样简单,并且您希望在条件为假时陷入NEXT情况,那么 可以做的是将break语句设置为true if子句的分支,并且在false分支中没有break语句。然后当假分支运行时,处理将不会在完成时退出;它会落到下一个案例中。

答案 1 :(得分:4)

正如亚当解释的那样,这是可能的,这里有一些代码来说明:

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将继续处理这些案例,直到它遇到一个。

答案 2 :(得分:1)

据我所知,这是不可能的。您需要使用if else语句或嵌套的is / else,而不是switch。

something = "other";

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