概要
<#function name param1 param2 ... paramN>
...
<#return returnValue>
...
</#function>
这里:
-
name:方法变量的名称(不是表达式) -
param1,param2等: 局部变量的名称, 存储参数的值(不是表达式),在=号后面和默认值 (是表达式)是可选的。 -
paramN,最后一个参数, 可以可选的包含一个尾部省略(...), 这就意味着宏接受可变的参数数量。局部变量paramN将是额外参数的序列。 -
returnValue: 计算方法调用值的表达式。
return 指令可以在 <#function
...> 和
</#function> 之间被用在任意位置和任意次数。
没有默认值的参数必须在有默认值参数
(paramName=defaultValue)
之前
描述
创建一个方法变量(在当前命名空间中,如果你知道命名空间的特性)。
这个指令和 macro
指令 的工作方式一样,除了 return
指令必须有一个参数来指定方法的返回值,而且视图写入输出的将会被忽略。
如果到达 </#function>
(也就是说没有 return
returnValue),
那么方法的返回值就是未定义变量。
示例1:创建一个方法来计算两个数的平均值:
<#function avg x y>
<#return (x + y) / 2>
</#function>
${avg(10, 20)}将会输出:
15
示例2:创建一个方法来计算多个数的平均值:
<#function avg nums...>
<#local sum = 0>
<#list nums as num>
<#local sum = sum + num>
</#list>
<#if nums?size != 0>
<#return sum / nums?size>
</#if>
</#function>
${avg(10, 20)}
${avg(10, 20, 30, 40)}
${avg()!"N/A"}将会输出:
15 25 N/A