table of contents
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 手冊頁計劃:../../man-pages-zh/manpages-zh
Tcl |