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