Provided by: manpages-zh_1.5.2-1_all bug

NAME

       uplevel - 在一個不同的棧楨中執行一個稿本

總覽 SYNOPSIS
       uplevel ?level? arg ?arg ...?
_________________________________________________________________

描述 DESCRIPTION
       串聯所有   arg   參數如同把它們傳遞給   concat   一樣;接著在用   level
       指示出的變量上下文中對結果進行求值。Uplevel 返回這次求值的結果。

       如果                                                              level
       是一個整數則它給出執行這個命令之前要移動的距離(在過程調用棧上)。如果level#  和隨後的一個數字組成,則這個數字給出一個絕對的層次數。如果省略了
       level  則它預設為  1。如果第一個  command 參數以一個數字或 # 則不能預設
       Level。

       例如,假設從頂層調用過程 a,而它調用 b,接著b  調用  c。假設  c  調用了
       uplevel   命令。如果   level1#2  或被省略了,則命令將在  b
       的變量上下文中在執行。如果   level2#1   則命令將在    a
       的變量上下文中執行。如果       level3#0
       則命令將在頂層執行(只有全局變量是可見的)。

       uplevel
       命令導致調用它的過程在命令執行的時候從過程調用棧中消失。在上面的例子中,假設
       c 調用了命令
              uplevel 1 {set x 43; d}
       這裏的 d 是另一個 Tcl 過程。set 命令將修改在 b 的上下文中的變量 x  ,而
       d 將在層次 3 上執行,如同從 b 調用它一樣。如果 d 接著執行命令
              uplevel {set x 42}set  命令將修改在 b 的上下文中的同一個變量 x: 在 d 執行的時候過程 c
       在調用棧上不出現。可以使用命令「info level」來獲得當前過程的層次。

       Uplevel 使實現如同 Tcl 過程的新控制結構成為可能(例如,可以使用  uplevelwhile 構造實現為一個 Tcl 過程)。

       namespace                 eval                是改變                Tcl
       命令上下文的另一種方式(除了過程調用之外)。它向棧增加一個調用楨來表示名字空間上下文。這意味著每個
       namespace       eval       命令被視為給      uplevelupvar
       命令的另一個調用層次。例如,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 手冊頁翻譯計劃》:
       http://cmpp.linuxforum.net