有没有办法在 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
我在一个过程中用 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