我有一个像这样的开关(用cfscript编写):
switch (something) {
case "stuff":
if(this eq that){
writeDump("hello");
} else { /* do other? */ }
break;
case "other":
//do something else
break;
}
在我的else
中,我希望能够告诉它我想要调用“其他”案例。这可能吗? (我似乎记得在其他语言中这样做。)
答案 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");
}