On this page
开关,大小写,默认,中断
Page Contents
Synopsis
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
Where:
value
,refValue1
等:表达式的计算结果为相同类型的标量。
break
-s 和default
是可选的。
Description
不建议使用此指令,因为它会由于掉落行为而容易出错。除非您想利用掉线行为,否则请使用elseif -s。
开关用于根据表达式的值选择模板的片段:
<#switch animal.size>
<#case "small">
This will be processed if it is small
<#break>
<#case "medium">
This will be processed if it is medium
<#break>
<#case "large">
This will be processed if it is large
<#break>
<#default>
This will be processed if it is neither
</#switch>
switch
内部必须是一个或多个<#case value>
,并且在所有此类case
标签之后还可以选择一个<#default>
。当 FM 到达switch
指令时,它将选择case
指令,其中refValue
等于value
并在那里 continue 处理模板。如果不存在具有适当值的case
指令,那么它将在default
指令(如果存在)处 continue 处理,否则它将在switch
的结束标记之后 continue 处理。现在出现了令人困惑的事情:当它选择了case
指令时,它将 continue 在那里的处理,并将 continue 进行直到到达break
指令为止。也就是说,到达另一个case
指令或<#default>
标签时,它不会自动离开switch
指令。例:
<#switch x>
<#case 1>
1
<#case 2>
2
<#default>
d
</#switch>
如果x
为 1,则它将打印 1 2 d;否则,将打印 1 2 d。如果x
为 2,则将打印 2 d;如果x
为 3,则它将打印 d。这就是上述的掉队行为。 break
标签指示 FM 立即跳过switch
结束标签。