table of contents
- English tcl9.0-doc
- English tcl8.6-doc
- 中文 (zh-CN)
- 繁體中文 (zh-TW)
uplevel(3tcl) | Tcl Built-In Commands | uplevel(3tcl) |
NAME¶
uplevel - 在一个不同的栈桢中执行一个脚本
总览 SYNOPSIS¶
uplevel ?level? arg ?arg ...?
描述 DESCRIPTION¶
串联所有 arg 参数如同把它们传递给 concat 一样;接着在用 level 指示出的变量上下文中对结果进行求值。Uplevel 返回这次求值的结果。
如果 level 是一个整数则它给出执行这个命令之前要移动的距离(在过程调用栈上)。如果level 由 # 和随后的一个数字组成,则这个数字给出一个绝对的层次数。如果省略了 level 则它缺省为 1。如果第一个 command 参数以一个数字或 # 则不能缺省 Level。
例如,假设从顶层调用过程 a,而它调用 b,接着b 调用 c。假设 c 调用了 uplevel 命令。如果 level 是 1 或 #2 或被省略了,则命令将在 b 的变量上下文中在执行。如果 level 是 2 或 #1 则命令将在 a 的变量上下文中执行。如果 level 是 3 或 #0 则命令将在顶层执行(只有全局变量是可见的)。
uplevel 命令导致调用它的过程在命令执行的时候从过程调用栈中消失。在上面的例子中,假设 c 调用了命令
uplevel 1 {set x 43; d}
uplevel {set x 42}
Uplevel 使实现如同 Tcl 过程的新控制结构成为可能(例如,可以使用 uplevel 把 while 构造实现为一个 Tcl 过程)。
namespace eval 是改变 Tcl 命令上下文的另一种方式(除了过程调用之外)。它向栈增加一个调用桢来表示名字空间上下文。这意味着每个 namespace eval 命令被视为给 uplevel 和 upvar 命令的另一个调用层次。例如,info level 1 将返回描述一个命令的列表,它要么是最外的过程要么是最外的 namespace eval 命令。还有,uplevel #0 在最外面的名字空间(全局名字空间)中的顶层求值一个脚本。
参见 SEE ALSO¶
namespace(n), upvar(n)
关键字 KEYWORDS¶
context, level, namespace, stack frame, variables
[中文版维护人]¶
寒蝉退士
[中文版最新更新]¶
2001/11/21
《中国 Linux 论坛 man 手册页翻译计划》:¶
跋¶
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
Tcl |