______________________________________________________________________________
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}
這 裏 的d 是 另
一 個 Tcl 過 程 。 set
命 令 將 修 改 在
b 的 上 下 文 中
的 變 量 x , 而
d 將 在 層 次 3 上
執 行 , 如 同 從
b 調 用 它 一 樣
。 如 果 d 接 着
執 行 命 令
uplevel {set x 42} 則set 命 令
將 修 改 在 b 的
上 下 文 中 的 同
一 個 變 量 x: 在
d 執 行 的 時 候
過 程 c 在 調 用
棧 上 不 出 現 。
可 以 使 用 命 令
“info level”來 獲 得
當 前 過 程 的 層
次 。
Uplevel 使 實 現 如 同 Tcl 過 程 的 新 控 制 結 構 成 爲 可 能 (例 如 , 可 以 使 用 uplevel 把 while 構 造 實 現 爲 一 個 Tcl 過 程 )。
namespace eval 是 改 變 Tcl 命 令 上 下 文 的 另 一 種 方 式 (除 了 過 程 調 用 之 外 )。 它 向 棧 增 加 一 個 調 用 楨 來 表 示 名 字 空 間 上 下 文 。 這 意 味 着 每 個 namespace eval 命 令 被 視 爲 給 uplevel 和 upvar 命 令 的 另 一 個 調 用 層 次 。 例 如 , info level 1 將 返 回 描 述 一 個 命 令 的 列 表 , 它 要 麼 是 最 外 的 過 程 要 麼 是 最 外 的 namespace eval 命 令 。 還 有 , uplevel #0 在 最 外 面 的 名 字 空 間 (全 局 名 字 空 間 )中 的 頂 層 求 值 一 個 腳 本 。
參 見 SEE ALSO
關 鍵 字 KEYWORDS
context, level, namespace, stack frame, variables
[中 文 版 維 護 人 ]
寒 蟬 退 士
[中 文 版 最 新 更 新 ]
2001/11/21
《 中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃 》 :
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh