ColdFusion cfswitch

ColdFusion cfswitch

ColdFusion 的 cfswitch - cfcase 可以在 JavaScript 中做这样的事情吗?

switch (true) {
   case (myNuber_1 < myNumber_2):
    // do something
    break;
   case (myNuber_1 === myNumber_2):
    // do something else
    break;
}```

您可以在 CF11+ 中使用闭包。

    <cfscript>
        function doSomething(required numeric myNum) {
            function thisAction(required numeric myNum) { 
                    if( myNum <= 10 ){
                        //do whatever
                        return "Less or equal to 10";
                    }
                    else if( myNum > 10 ){
                        //do whatever else
                        return "More than 10";
                    }
                };
                return thisAction(myNum);
            }
                writeOutput(doSomething(11));
    </cfscript>

根据文档,case 值不能是复数。 "The value or values must be simple constants or constant expressions, not variables." (https://cfdocs.org/cfcase) 您提出的复杂 switch case 语句需要使用复杂的 case 值,因此 cfml case 语句不支持您想要的方法。

如果您想知道 "Constant Expression" 是什么样子,我提供了一个示例:

<cfscript>
fruit = true;
switch(fruit) {
    case ("e" EQ "e"):
        writeOutput("I like fruit!");
        break; 
    case ("e" EQ "f"):
        writeOutput("I don't like fruit!");
        break; 
    default: 
        writeOutput("Fruit, what fruit?"); 
        break; 
 }
</cfscript>

但是不要有什么大的想法,因为你不能有一个包含变量的 "Constant Expression",也不能有两个计算结果相同的表达式(true 和 true 和很快)。在此示例中,第一种情况的计算结果为 "true",第二种情况的计算结果为 "false",默认情况下会拾取其他所有内容。如果它们都评估为真,它将失败。如果表达式的任何部分包含变量,它将引发错误。

已编辑以添加示例。