有没有办法在TCL 8.4中创建字典全局

时间:2015-02-23 19:44:09

标签: dictionary tcl

我在程序中的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)”解释为一个单独的变量,我如何将其设置为全局,以便我可以在另一个过程中使用它。

2 个答案:

答案 0 :(得分:3)

您可以使用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

答案 1 :(得分:0)

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