类型独立的内置

这些是内置的,根本不关心其左手参数的类型。

switch

Note:

此内置功能自 FreeMarker 2.3.23 开始存在。

这基本上是switch-case-default directives的嵌入式(表达式)版本。它的通用格式类似于matchedValue?switch(case1, result1, case2, result2, ... caseN, resultN, defaultResult),其中defaultResult可以省略。例:

<#list ['r', 'w', 'x', 's'] as flag>
  ${flag?switch('r', 'readable', 'w' 'writable', 'x', 'executable', 'unknown flag: ' + flag)}
</#list>
readable
  writable
  executable
  unknown flag: s

也就是说,switch将找到第一个case参数(从左到右),其值等于matchedValue,然后返回result参数的值,该值紧接在case参数之后。如果找不到相等的case,则它将返回defaultResult的值,或者如果没有defaultResult参数(即,参数的数量为偶数),则它将停止模板处理,并显示错误。

Further details:

Note:

如果需要按布尔值进行切换,则应改用then built-in,例如matchedBoolean?then(whenTrue, whenFalse)

Note:

如果您需要执行任意逻辑测试,而不是在case参数上进行简单的相等比较,则可以执行以下操作(此处我们测试范围):true?switch(priority <= 1, "low", priority == 2, "medium", priority >= 3, "high")

上一章 首页 下一章