在 TCL 中打印关联数组,就像在 Perl 中打印 Dumper
print associative array in TCL like Dumper prints in Perl
----------------------------Perl代码-------- --------------------
use Data::Dumper;
my %hash = ('abc' => 123, 'def' => 6);
print Dumper(\%hash);
给出类似的输出,
$VAR1 = {
'def' => 6
'abc' => 123
};
----------------------------TCL代码-------- --------------------
set hash(abc) 123
set hash(def) 6
我想像 perl 打印一样打印这个关联数组。除了 parray hash
之外,还有什么方法可以在 TCL 中打印它吗?
如果您正在谈论生成将创建数组的可执行脚本,请执行以下操作:
proc dumpArray {arrayName} {
upvar $arrayName ary
return [list array set $arrayName [array get ary]]
}
如果您希望输出是多行的并且具有一定的可读性,您需要做更多的工作:
proc dumpArray {arrayName} {
upvar $arrayName ary
set result [list array set $arrayName]
append result "{\n"
foreach key [lsort -dictionary [array names ary]] {
append result " " [list $key $ary($key)] "\n"
}
append result "}"
return $result
}
从第一个版本的简单性可以看出,我们通常不会费心编写一段特定的代码来转储数组;首先,它实际上是一条线。
其中之一准备就绪后,您可以执行以下操作:
array set hash {"abc" 123 "def" 6}
puts [dumpArray hash]
----------------------------Perl代码-------- --------------------
use Data::Dumper;
my %hash = ('abc' => 123, 'def' => 6);
print Dumper(\%hash);
给出类似的输出,
$VAR1 = {
'def' => 6
'abc' => 123
};
----------------------------TCL代码-------- --------------------
set hash(abc) 123
set hash(def) 6
我想像 perl 打印一样打印这个关联数组。除了 parray hash
之外,还有什么方法可以在 TCL 中打印它吗?
如果您正在谈论生成将创建数组的可执行脚本,请执行以下操作:
proc dumpArray {arrayName} {
upvar $arrayName ary
return [list array set $arrayName [array get ary]]
}
如果您希望输出是多行的并且具有一定的可读性,您需要做更多的工作:
proc dumpArray {arrayName} {
upvar $arrayName ary
set result [list array set $arrayName]
append result "{\n"
foreach key [lsort -dictionary [array names ary]] {
append result " " [list $key $ary($key)] "\n"
}
append result "}"
return $result
}
从第一个版本的简单性可以看出,我们通常不会费心编写一段特定的代码来转储数组;首先,它实际上是一条线。
其中之一准备就绪后,您可以执行以下操作:
array set hash {"abc" 123 "def" 6}
puts [dumpArray hash]