在同一命名空间中的 proc 之间传递变量

Pass variable between procs in the same namespace

我在同一个命名空间中有两个进程

proc myNamespace::function {} {
  set myVar "Hello"
}

proc myNamespace::otherFunction {} {
  global myVar
  puts $myVar
}

现在由于某种原因这不起作用。我尝试使用 upvar #0 使 myVar 成为全局变量。我已经尝试在 otherFunction 中执行 global myNamespace::myVar,似乎没有任何效果。我只想让 myVar 成为 myNamespace 命名空间中的一个变量。我怎样才能做到这一点?

尝试

proc myNamespace::function {} {
    variable myVar
    set myVar "Hello"
}

proc myNamespace::otherFunction {} {
    variable myVar
    puts $myVar
}

在命令中创建的变量始终是局部变量,除非它们被明确声明为名称空间变量(使用 variable 命令)或全局变量(使用 global 命令)。 Tcl 不使用词法作用域,因此命令永远不会只从周围作用域中获取变量。如果使用命名空间限定的名称,例如 ::foo::barfoo 命名空间中的命名空间变量 bar,它是 ::命名空间)或::baz(全局变量baz)。

文档:global, proc, set, variable