开关,大小写,默认,中断

Page Contents

Synopsis

<#switch value>
  <#case refValue1>
    ...
    <#break>
  <#case refValue2>
    ...
    <#break>
  ...
  <#case refValueN>
    ...
    <#break>
  <#default>
    ...
</#switch>

Where:

  • valuerefValue1等:表达式的计算结果为相同类型的标量。

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结束标签。