变量,范围

变量,范围

PreviousNext

变量,范围

本章介绍当模板在访问变量时发生了什么事情,还有变量是如何存储的。

当调用 Template.process 方法时,它会在方法内部创建一个

Environment 对象,在 process 返回之前一直使用。

该对象存储模板执行时的运行状态信息。除了这些,它还存储由模板中指令,如

assign, macro,

local 或 global 创建的变量。

它不会尝试修改传递给 process 的数据模型对象,

也不会创建或替换存储在配置中的共享变量。

当你想要读取一个变量时,FreeMarker 将会以这种顺序来查找,

直到发现了完全匹配的的变量名称才会停下来:

在 Environment 中:

如果在循环中,在循环变量的集合中。

循环变量是由如 list 等指令来创建的。

如果在宏中,在宏的局部变量集合中。

局部变量可以由 local 指令创建。

而且,宏的参数也是局部变量。

在当前的 命名空间 中。

可以使用 assign

指令将变量放到一个命名空间中。

在由 global 指令创建的变量集合中。

FTL将它们视为数据模型的普通成员变量一样来控制它们。

也就是说,它们在所有的命名空间中都可见,

你也可以像访问一个数据模型中的数据一样来访问它们。

在传递给 process 方法的数据模型对象中。

在 Configuration 对象存储的共享变量集合中。

在实际操作中,来自模板设计者的观点是这6种情况应该只有4种,

因为从那种观点来看,后面3种(由 global 创建的变量,

真实的数据模型对象,共享变量)共同构成了全局变量的集合。

请注意,在FTL中可以从一个特定层面获取 特定变量。

PreviousNext

相关推荐

宝应静心莲宾馆预订价格,联系电话位置地址【携程酒店】
2022春节期间可以网购吗
365bet安全上网导航

2022春节期间可以网购吗

📅 07-31 👁️ 6427
手机实时对讲app排行榜TOP10推荐
365bet安全上网导航

手机实时对讲app排行榜TOP10推荐

📅 11-01 👁️ 9182