public class Scope extends Object
Constructor and Description |
---|
Scope(Map data,
Map<String,Object> sharedObjectMap)
构建顶层 Scope, parent 为 null 是顶层 Scope 的标志
|
Scope(Scope parent)
构建 AST 执行过程中作用域栈
|
Modifier and Type | Method and Description |
---|---|
boolean |
exists(Object key)
自内向外在作用域栈中查找变量是否存在
|
Object |
get(Object key)
获取变量
自内向外在作用域栈中查找变量,返回最先找到的变量
|
Ctrl |
getCtrl() |
Map |
getData()
获取本层作用域 data,可能为 null 值
|
Object |
getGlobal(Object key)
获取全局变量
全局作用域是指本次请求的整个 template
|
Object |
getLocal(Object key)
获取局部变量
|
Map |
getMapOfValue(Object key)
自内向外在作用域栈中查找变量,获取变量所在的 Map,主要用于 IncDec
|
Map |
getRootData()
获取顶层作用域 data,可能为 null 值
|
void |
remove(Object key)
移除变量
自内向外在作用域栈中查找变量,移除最先找到的变量
|
void |
removeGlobal(Object key)
移除全局变量
全局作用域是指本次请求的整个 template
|
void |
removeLocal(Object key)
移除局部变量
|
void |
set(Object key,
Object value)
设置变量
自内向外在作用域栈中查找变量,如果找到则改写变量值,否则将变量存放到顶层 Scope
|
void |
setData(Map data)
设置/替换本层作用域 data,通常用于在扩展指令中使用现成可用的 Map 来存放数据,
从而避免 Scope 内部创建 data,节省时空
注意:本方法会替换掉已经存在的 data 对象
|
void |
setGlobal(Object key,
Object value)
设置全局变量
全局作用域是指本次请求的整个 template
|
void |
setLocal(Object key,
Object value)
设置局部变量
|
void |
setRootData(Map data)
设置/替换顶层作用域 data,可以在扩展指令之中通过此方法切换掉顶层作用域
实现作用域完全隔离的功能
注意:本方法会替换掉顶层已经存在的 data 对象
|
public Scope(Map data, Map<String,Object> sharedObjectMap)
data
- 用于在模板中使用的数据,data 支持 null 值sharedObjectMap
- 共享对象public Scope(Scope parent)
public Ctrl getCtrl()
public void remove(Object key)
public void removeLocal(Object key)
public void removeGlobal(Object key)
public Map getData()
public void setData(Map data)
public Map getRootData()
public void setRootData(Map data)
public boolean exists(Object key)
Copyright © 2018. All rights reserved.