### 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 )
```
- 1. 關于
- 2. 什么是Velocity?
- 3. Velocity 可以做什么?
- 3.1. Mud Store 示例
- 4. Velocity模板語言(VTL): 介紹
- 5. Hello Velocity World!
- 6. 注釋
- 7. 引用
- 7.1. 變量Variables
- 7.2. 屬性
- 7.3. 方法
- 8. 形式引用符Formal Reference Notation
- 9. 安靜引用符Quiet Reference Notation
- 11. Case Substitution
- 12. 指令
- 12.1. #set
- 12.2. 字面字符串
- 12.3. 條件
- 12.3.1 If / ElseIf / Else
- 12.3.2 關系和邏輯操作符
- 12.4. 循環
- 12.4.1. Foreach 循環
- 12.5. 包含
- 12.6. 解析
- 12.7. 停止
- 12.10. 宏
- 12.10.1. Velocimacro 參數
- 12.10.2. Velocimacro 屬性
- 12.10.3. Velocimacro Trivia
- 13. Getting literal
- 13.1. 貨幣字符
- 13.2. 轉義 有效的 VTL 指令
- 13.3. 轉義 無效的 VTL 指令
- 14. VTL 格式化問題
- 15. 其它特征和雜項
- 15.1. 數學特征
- 15.2. 范圍操作符
- 15.3. 進階:轉義和!
- 15.4. Velocimacro 雜記
- 15.5. 字符串聯