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_运行时变量和范围相关推荐
- python 运行时 变量_python运行过程,变量,符号
1,python运行过程 2,编译型,解释型 编译型, C, C++ ------>准备好的一桌子菜,直接吃 一次性把你的代码编译生成机器能够识别的二进制码 解释型: py ...
- C++11 运行时变量类型判断
#include <typeinfo> string name = "cpp"; int age = 14; cout << typeid(age).nam ...
- 编译器设计-RunTime运行时环境
编译器设计-RunTime运行时环境 Compiler Design - Run-Time Environment 作为源代码的程序仅仅是文本(代码.语句等)的集合,要使其活动,它需要在目标计算机上执 ...
- Go 语言运行时环境变量快速导览
原文: http://dave.cheney.net/2015/11/29/a-whirlwind-tour-of-gos-runtime-environment-variables Go 语言运行时 ...
- iOS之Xcode运行时环境变量汇总说明
变量名 说明 解释 OBJC_PRINT_OPTIONS list which options are set 输出OBJC已设置的选项 OBJC_PRINT_IMAGES log image and ...
- 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?
转载自 类和对象运行时在内存里是怎么样的?各种变量.方法在运行时是怎么交互的? 在回答这个问题之前先了解一下Java的一些基础知识. 我们知道Java程序运行在虚拟机环境里,那我们先看一下虚拟机的 ...
- 方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?
方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存,它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆. 1.此区域是线程共享的.储存已加载的类型信息.常 ...
- Go 语言运行时环境变量快速
Go 语言运行时环境变量快速导览 Go Runtime除了提供:GC, goroutine调度, 定时器,network polling等服务外, 还提供其它一些工具设施,用于开启额外的调试输出, 或 ...
- UE4 在游戏运行时更改变量 (通过鼠标滑轮来更改第一人称角色的最大行走速度)
在上一篇博客中(UE4 更改组件变量 (以修改第一人称角色模板的最大行走速度和跳跃高度为例))已经创建了最大行走速度这个变量,如何在游戏运行时修改它从而达到动态调整速度的效果? 效果: 步骤: 1.创 ...
最新文章
- mysql9索引实战_mysql 索引实战 | 学步园
- 大规模运行MongoDB应该知道的10件事
- 有关Linux下的一些配置
- [转载] vim风格设置
- eclipse汉化完成常见问题的解决方案
- 5G无线技术基础自学系列 | 大规模天线阵列
- 《终身成长》学习总结
- 从rman 备份中恢复表
- 多分类学习(OvO、OVR、MVM 原理区别)
- 国产GM8220,USB2.0集线器,替换汤铭的FE1.1,USB HUB,替换创维GL850
- 工业网关作为数据采集、数据转发的重要设备,如何服务与工业互联网
- android 百度地图获取城市,Android 百度地图获取两点之间的距离和推荐的驾车路线...
- 智源 - 看山杯 专家发现算法大赛 2019 知乎
- 春晚 “北帝” “东邪”
- java 授权对象初始化失败
- MATLAB中如何用对数方式显示图形坐标?
- 【数据压缩作业9】H.264码流分析仪
- 使用rabbitmq实现短信验证码的的发送
- mysql sdo geometry_SDO_Geometry说明
- python解析json多层_python解析多层json操作示例