有没有办法在 TCL 8.4 中使字典全局化

Is there a way to make a dictionary global in TCL 8.4

我在一个过程中用 tcl 8.4 构建了一个字典。如何在另一个过程中使用构造的字典。我添加了一个示例代码,说明如何在 tcl 8.4 中构建字典。我知道 tcl 8.5 有内置 'dict' 选项,但我必须使用 tcl 8.4.

proc a {} {
    set test(key1) "value1"
    set test(key2) "value2"
    lappend keylist "key1"
    lappend keylist "key2"
    foreach key $keylist {
            puts "value of $key is $test($key)"
    }
}

所以上面提到的过程建立了一个字典。但是由于 tcl 8.4 解释器将每一行“$test($key)”解释为一个单独的变量,我怎样才能使它成为全局变量,以便我可以在另一个过程中使用它。

如果您能够 return 字典,您可以将它作为参数传递给另一个过程。 (本来希望把它放在评论部分,但我没有所需的代表)

您可以使用 global 命令使变量或数组成为全局变量。

例如:

proc a {} {
    global test
    set test(key1) "value1"
    set test(key2) "value2"
    lappend keylist "key1"
    lappend keylist "key2"
    foreach key $keylist {
        puts "value of $key is $test($key)"
    }
}

a

# Outputs
# value of key1 is value1
# value of key2 is value2

# Now use them in another proc...
prob b {} {
    global test
    puts $test(key1)
    puts $test(key2)
}

b

# Outputs
# value1
# value2