例一,没有局部变量,直接返回
定义:
<#function avg x y>
<#return (x + y) / 2>
</#function>
调用:
${avg(10, 20)}
结果:
15
avg是函数名, x和y是参数
例二,定义局部变量,返回结果
定义:
<#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
例三:if判断语句
定义:
<#function getLevel quality>
<#local level = 1>
<#if quality=="优">
<#local level = 1>
<#elseif quality=="良">
<#local level = 2>
<#elseif quality=="轻度污染">
<#local level = 3>
<#elseif quality=="中度污染">
<#local level = 4>
<#elseif quality=="重度污染">
<#local level = 5>
<#elseif quality=="严重污染">
<#local level = 6>
<#else>
<#local level = 1>
</#if>
<#return level>
</#function>
调用:
${getLevel("优")}
${getLevel("良")}
结果:
1
2
参考链接:
http://freemarker.org/docs/ref_directive_function.html