TCL中的全局数组

时间:2018-05-17 16:53:51

标签: tcl

我想知道如何在 TCL 中创建或创建全局数组,以便在Procedure内访问它。我的意思是,如果我有一个Procedure并且我想在过程中使用Array值,我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

您可以使用global访问阵列。 E.g。

array set myArr {a 1 b 2 c 3}

proc foo {} {
    global myArr
    parray myArr
}

foo
#=> myArr(a) = 1
#=> myArr(b) = 2
#=> myArr(c) = 3

使用::

访问全局namespace
proc bar {} {
    parray ::myArr
}
#=> ::myArr(a) = 1
#=> ::myArr(b) = 2
#=> ::myArr(c) = 3

您还可以使用upvaruplevel,根据您使用Tcl的经验,它们可能会或可能不会更容易理解;它们要求您了解级别(或堆栈帧)。基本上,全局命名空间位于0级或0级,每次进入proc时,你都会更深入1级。