Manpages

______________________________________________________________________________

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

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh