TCL中的print关联数组,如Perl中的Dumper打印

时间:2015-04-10 04:47:36

标签: tcl

----------------------------- Perl Code ------------- ----------------

        use Data::Dumper;
        my %hash = ('abc' => 123, 'def' => 6);
        print Dumper(\%hash);

给出输出,

    $VAR1 = {
              'def' => 6
              'abc' => 123
            };

----------------------------- TCL Code ------------- ----------------

    set hash(abc) 123
    set hash(def) 6

我想像Perl打印一样打印这个关联数组。有没有办法在除parray hash之外的TCL中打印这个?

1 个答案:

答案 0 :(得分:0)

如果您正在谈论生成将创建数组的可执行脚本,请执行以下操作:

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]