023_运行时变量和范围
1. 當調用Template.process方法時, 它會在方法內部創建一個Environment對象, 在process返回之前一直使用。該對象存儲模板執行時的運行狀態信息。除了這些, 它還存儲由模板中指令, 如: assign, macro, local或global創建的變量。它不會嘗試修改傳遞給process的數據模型對象, 也不會創建或替換存儲在配置中的共享變量。
2. 當你想要讀取一個變量時, FreeMarker將會以這種順序來查找, 直到發現了完全匹配的的變量名稱才會停下來:
2.1. 在Environment中:
2.1.1. 如果在循環中, 在循環變量的集合中。循環變量是由如list等指令來創建的。
2.1.2. 如果在宏中, 在宏的局部變量集合中。局部變量可以由local指令創建。而且, 宏的參數也是局部變量。
2.1.3. 在當前的命名空間中。可以使用assign指令將變量放到一個命名空間中。
2.1.4. 在由global指令創建的變量集合中。FTL將它們視為數據模型的普通成員變量一樣來控制它們。也就是說, 它們在所有的命名空間中都可見, 你也可以像訪問一個數據模型中的數據一樣來訪問它們。
2.2. 在傳遞給process方法的數據模型對象中。
2.3. 在Configuration對象存儲的共享變量集合中。
3. 在實際操作中, 來自模板設計者的觀點是這6種情況應該只有4種, 因為從那種觀點來看, 后面3種(由global創建的變量, 真實的數據模型對象, 共享變量)共同構成了全局變量的集合。
總結
以上是生活随笔為你收集整理的023_运行时变量和范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 022_配置configuration
- 下一篇: 024_输入输出字符集