我想知道如何在 TCL 中创建或创建全局数组,以便在Procedure
内访问它。我的意思是,如果我有一个Procedure
并且我想在过程中使用Array值,我该怎么办呢?
答案 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
您还可以使用upvar
和uplevel
,根据您使用Tcl的经验,它们可能会或可能不会更容易理解;它们要求您了解级别(或堆栈帧)。基本上,全局命名空间位于0级或0级,每次进入proc
时,你都会更深入1级。