概要
<#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