如何获取tcl中的数组列表

时间:2011-01-24 23:58:56

标签: arraylist tcl

我做了一些研究,但只找到ugly hacks,它为每个数组元素使用唯一名称,并将名称保存到列表中。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您希望使用词典代替数组:http://www.tcl.tk/man/tcl8.5/TclCmd/dict.htm

字典是第一类变量,可以像其他变量一样传递(并放在列表中)。

% set d1 [dict create a b c d]
% set d2 [dict create e f g h i j]
% set lst [list $d1 $d2]
% set lst  ;# ==> {a b c d} {e f g h i j}

答案 1 :(得分:2)

在工作中,我们仍然使用Tcl 8.4。我知道dict已被后端移植,但它不是标准软件包的一部分。对于8.4,我们使用Tclx包中的键控列表。这是一个例子:

# Problem: I want to create a list of arrays
# Solution: For 8.5, I can have list of dict, but for 8.4, use 
# keyedlist in place of dict. This script is written for 8.4

package require Tclx

# Create individual users and a list
keylset user1 id 101 alias john; # {{id 101} {alias john}}
keylset user2 id 102 alias ally; # {{id 102} {alias ally}}
set users [list $user1 $user2]

# Show the list
foreach user $users {
    puts "ID:    [keylget user id]"
    puts "Alias: [keylget user alias]"
    puts ""
}

输出:

ID:    101
Alias: john

ID:    102
Alias: ally