在TCL中打印关联数组,就像在Perl中打印转储程序一样
---------------Perl代码--------------- 输出如下:在TCL中打印关联数组,就像在Perl中打印转储程序一样,tcl,Tcl,---------------Perl代码--------------- 输出如下: $VAR1 = { 'def' => 6 'abc' => 123 }; ---------------TCL代码--------------- 我想像perl打印一样打印这个关联数组。除了parray散列,还有其他方法可以在TCL中打印此内容吗 如果要生成可执行脚本以创建数组,请执行以下操作: proc du
$VAR1 = {
'def' => 6
'abc' => 123
};
---------------TCL代码---------------
我想像perl打印一样打印这个关联数组。除了parray散列,还有其他方法可以在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]
帕雷不是一个命令,而是一个过程。做身体招架。你手里有密码。根据你的想法定制它。@Dinesh你说parray不是命令是什么意思?proc是用来发出命令的,所以如果parray是通过proc创建的,那它不是命令吗?@Jerry:同意你的看法。我想说的是,parray不像lindex那样是一个内置命令,而是一个过程。
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]