coldfusion调用交换机中的另一个案例

coldfusion调用交换机中的另一个案例,coldfusion,switch-statement,Coldfusion,Switch Statement,我有一个这样的开关(用cfscript编写): 在我的else中,我希望能够告诉它我希望调用“other”案例。这可能吗?(我似乎记得用其他语言做过这件事。)据我所知,这是不可能的。您需要使用if-else语句或嵌套的is/else来代替开关 something = "other"; if (something eq "stuff" and 1 eq 2) { writeDump("hello"); } else if (something eq "other") { writ

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


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

据我所知,这是不可能的。您需要使用if-else语句或嵌套的is/else来代替开关

something = "other";

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

CF中没有GOTO构造,没有。这正是您所要求的


如果您的切换真的像您所指出的那样简单,并且您希望在条件为false时进入下一种情况,那么您可以做的是在If子句的true分支中有break语句,而在false分支中没有break语句。然后,当假分支运行时,处理完成后将不会退出案例;这将进入下一个案例。

正如Adam所解释的,这是可能的,下面是一些代码来说明如何:

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;
}
something=“stuff”;
test=“更多东西”;
开关(某物){
案例“东西”:
if(测试eq“更多材料”){
写输出(“某物”

”; 打破 } 案例“其他”: 写输出(“其他东西”

”; 打破 }

更改“something”和“test”的值以查看不同的结果。在cfscript中使用开关时,如果没有“中断”,ColdFusion将继续处理这些案例,直到找到一个为止。

对不起,您的问题听起来非常不清楚。您能建议一种改进方法吗?基本上,在我的else中,我想要一个“goto”other“类命令……对我来说听起来很清楚,Sergii。@AdamCameron我想这是我的英语不好。抱歉,标记为正确,因为Coldfusion中没有goto语句(从版本9开始);然而,Scott Stroz也给出了一个很好的答案。@Jarede:在任何版本的ColdFusion中都没有一个
goto
,我严重怀疑在未来的版本中我们是否会看到类似的东西。
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;
}