3.5.3 调用堆栈
Next: Search path,Previous: Lexical environment,Up: Scope of variables
3.5.3 调用堆栈
当函数被调用时,一个新的求值框架会被创建。在程序执行的任何时刻,通过调用堆栈(call stack)可以访问当前激活环境。每当一个函数被调用时,一个被称为上下文(context)的特殊结构会在内部创建并存放在一个上下文的列表里面。当一个函数完成求值,它的上下文会从调用堆栈里面去除。
变量定义高于可以得到的调用堆栈时称为动态作用域。一个变量的绑定由变量的最近定义决定。这和R里面默认的作用域规则相违背。R里面默认的规则是变量绑定在函数定义的环境中(词法作用域)。一些函数,特别是使用和操作模型公式的函数,需要通过直接访问调用堆栈来模拟动态作用域。
通过函数名以 sys. 开头的一族函数来访问调用堆栈。现将它们简单列举如下。
sys.call- 获得特定上下文的调用。
sys.frame- 获得特定上下文的求值框架。
sys.nframe- 获得所有被激活的上下文的环境框架。
sys.function- 获得在特定上下文中被调用的函数。
sys.parent- 获得当前函数调用的父节点。
sys.calls- 获得所有激活的上下文的调用。
sys.frames- 获得所有被激活的上下文的求值框架。
sys.parents- 获得所有被激活的上下文的数值标签。
sys.on.exit- 设置一个特定上下文退出时执行的函数。
sys.status- 调用
sys.frames,sys.parents和sys.calls。 parent.frame- 获得特定父上下文的求值框架。
Hits:Loading...
- Previous Page: 3.5.2 词法环境
- Next Page: 3.5.4 搜索路径
