function, return

Page Contents

Synopsis

<#function name param1 param2 ... paramN>
  ...
  <#return returnValue>
  ...
</#function>

Where:

  • name:方法变量的名称(不是表达式)

  • param1param2等等:local variables的名称存储参数值(不是表达式),可以选择后面跟=和默认值(即表达式)。

  • paramN是最后一个参数,可以选择包含结尾的省略号(...),这表示宏采用可变数量的参数。局部变量paramN将是附加参数的序列。

  • returnValue:用于计算方法调用值的表达式。

return伪指令可以在<#function ...></#function>之间的任何位置使用,并且可以在任何时间使用。

没有默认值的参数必须在带有默认值(paramName=defaultValue)的参数之前。

Description

创建一个方法变量(如果知道名称空间功能,则在当前名称空间中)。该伪指令与macro directive的工作方式相同,不同之处在于return伪指令必须具有指定方法返回值的参数,并且将忽略写入输出的尝试。如果达到</#function>(即没有return returnValue),则该方法的返回值是未定义的变量。

示例 1:创建一种方法来计算两个数字的平均值:

<#function avg x y>
  <#return (x + y) / 2>
</#function>
${avg(10, 20)}

will print:

15

示例 2:创建一种计算多个数字平均值的方法:

<#function avg nums...>
  <#local sum = 0>
  <#list nums as num>
    <#local sum += num>
  </#list>
  <#if nums?size != 0>
    <#return sum / nums?size>
  </#if>
</#function>
${avg(10, 20)}
${avg(10, 20, 30, 40)}
${avg()!"N/A"}

will print:

15
25
N/A