我需要一些帮助来定义数组,并在TCL中显示和循环它们。
以下是我将如何在php中完成它们。
$date =array();
$size=0;
$date[$size] =$pre_event_date;
/* After doing some manpulation and calculations with $size */
for($i=0;$i<=$size;$i++){
echo $date[$i];
}
我想对tcl执行相同的操作。以下代码是否合适?
set size 0
set date[$size] $pre_event_date
#After performing some manipulation
for {set i 0} { $i <=$size } {incr i} {
puts "$date[$i]";
}
我也可以将set $ date定义为数组。有些人喜欢:
set date array();
所以我编辑了我的代码尝试了一个使用RSeeger的数组实现的简单测试:
set date(0) 35
set date(1) 40
foreach key [array names date]{
puts "${key}=$date($key)"
}
以上并没有返回任何可能存在错误的内容。 我也尝试过: 将$ date($ key)放在没有引号的情况下,但这也不起作用。
答案 0 :(得分:8)
如果您希望按编号(代码所暗示的)索引内容,请使用list
。它类似于C中的数组。
set mylist {}
lappend mylist a
lappend mylist b
lappend mylist c
lappend mylist d
foreach elem $mylist {
puts $elem
}
// or if you really want to use for
for {set i 0} {$i < [length $mylist]} {incr i} {
puts "${i}=[lindex $mylist $i]"
}
如果要按字符串索引(或者有稀疏列表),可以使用array
,这是key-&gt;值的散列图。
set myarr(chicken) animal
set myarr(cows) animal
set myarr(rock) mineral
set myarr(pea) vegetable
foreach key [array names myarr] {
puts "${key}=$myarr($key)"
}
答案 1 :(得分:6)
在Tcl中,数组概念与许多其他编程语言不同,Tcl调用数组通常在其他地方称为哈希映射或关联数组。数组索引不限于整数,但可以是任何合法字符串。大多数时候,我发现自己使用列表(或列表列表)而不是数组来进行数据操作。要循环遍历整个列表或数组,可以使用命令foreach。
foreach {index content} [array get date] {
put $index: $content
}
在设置数组之前,您不必初始化数组,只需开始添加成员即可。各个数组成员引用为
$array($key) or $array("abc")
Tcl中没有多维数组,但可以通过使用一致的键名来模拟它们,例如
set a(1,1) 0
set a(1,2) 1
...
除此之外,我只会指出你最优秀的Tcl wiki,它是array page和array man page的语法问题,因为我没有看到重复这些内容的大部分内容。
答案 2 :(得分:3)