12.10.1. Velocimacro 参数
Velocimacros 的参数可以是以下的VTL元素:
- 引用(Reference): 以 '$' 打头的元素
- 字面字符串(String literal) : 比如"$foo" 或 'hello'
- 字面数字: 1, 2 ….
- 整数范围: [ 1..2] 或 [$foo .. $bar]
- 对象数组: [ "a", "b", "c"]
- 布尔真
- 布尔假
当把引用作为参数传递给Velocimacros时,请注意引用是按“名字”传递的。这意味着他们的值在每次使用他们的Velocimacro中产生。这个特性允许你在方法调用是传递引用,并在每次使用时进行方法调用。例如,Fo,当调用下面的Velocimacro 时,
#macro( callme $a )
$a $a $a
#end
#callme( $foo.bar() )
结果是,在方法bar() 中,引用 $foo 被调用了3次。
咋看时,这个特征让人吃惊,当当你考虑一下Velocimacros的原本动机 – 在VTL模板中避免很多“剪切复制”操作—你就会明白。它允许你将无状态对象,比如在一个颜色表格行内重复产生一些颜色次序的对象,传递给Velocimacro。
如果你需要使用这个特征,你通常可以从方法内取得一个值,作为一个新的引用传递给宏:
#set( $myval = $foo.bar() )
#callme( $myval )