使用 coldfusion cfswitch 标签失败?
Fallthrough with coldfusion cfswitch tag?
任何人都可以指出使用 cfswitch 故意切换失败的习惯用法吗?
我的愿望是类似下面的输出“αβ”;目前它做 'sane' 事情并隐式中断:
<cfswitch expression="α">
<cfcase value="α">
<cfoutput>α</cfoutput>
<!--- explicit fallthrough to next case here? --->
</cfcase>
<cfcase value="β">
<cfoutput>β</cfoutput>
<!--- explicit break here? --->
</cfcase>
<cfdefaultcase>
<cfoutput>γ</cfoutput>
</cfdefaultcase>
</cfswitch>
如果输入值为 α
,那么 β
的检查怎么可能成功并因此输出 αβ
?
据我所知,基于标签的版本无法做到这一点。文档中的这一行似乎确认 CFCASE 总是执行中断:
"... You do not have to explicitly break out of the cfcase tag.."
然而,cfscript 版本没有。它的行为更像 java 的 switch/case。匹配 α
后,它将落入所有后续情况,除非明确告知 break
。
<cfscript>
switch("α") {
case "α":
WriteOutput("α");
case "β":
WriteOutput("β");
break; // explicit break
default:
WriteOutput("γ");
}
</cfscript>
任何人都可以指出使用 cfswitch 故意切换失败的习惯用法吗?
我的愿望是类似下面的输出“αβ”;目前它做 'sane' 事情并隐式中断:
<cfswitch expression="α">
<cfcase value="α">
<cfoutput>α</cfoutput>
<!--- explicit fallthrough to next case here? --->
</cfcase>
<cfcase value="β">
<cfoutput>β</cfoutput>
<!--- explicit break here? --->
</cfcase>
<cfdefaultcase>
<cfoutput>γ</cfoutput>
</cfdefaultcase>
</cfswitch>
如果输入值为 α
,那么 β
的检查怎么可能成功并因此输出 αβ
?
据我所知,基于标签的版本无法做到这一点。文档中的这一行似乎确认 CFCASE 总是执行中断:
"... You do not have to explicitly break out of the cfcase tag.."
然而,cfscript 版本没有。它的行为更像 java 的 switch/case。匹配 α
后,它将落入所有后续情况,除非明确告知 break
。
<cfscript>
switch("α") {
case "α":
WriteOutput("α");
case "β":
WriteOutput("β");
break; // explicit break
default:
WriteOutput("γ");
}
</cfscript>