在TCL中创建和访问多维哈希的最佳方法是什么,例如:
if{ $line = (\D+) ....} {
$hash{name}=$1
$hash{height}=$2
}
等
答案 0 :(得分:1)
您可以使用这样的复合键(最简单的最佳选项):
set x 1
set y 2
set d($x,$y) 3
或者您可以将字典放在数组元素中:
set x 1
set y 2
dict set d($x) $y 3
或者您可以使用嵌套字典:
set x 1
set y 2
dict set d $x $y 3
关于它们之间的差异有一些微妙之处,但大多数时候大多数人的代码并不真正关心,也不需要关心。
以下是您最需要照顾的情况。如果您正在执行第一个选项,则无法保证哪些字符可能在原子键中,您可以使用list
来构建整体密钥(因为它知道如何应用引用规则以避免混淆):
set x "the quick, cunning brown fox"
set y "the ever-so, ever-so lazy dog"
set d([list $x $y]) "jumps over"
当然,这使得访问更加尴尬,因为您需要在构建密钥时使用list
(或其他列表构建命令)(或者具有正确的字符串文字,这是烦人的更大的钥匙)。其他两个选项完全没有问题,任意键混乱;字典并没有因明确的设计目标而混淆。