我刚刚发现自己处于Tcl中有两个数组的位置。
我已获得$W_Array
和$P_Array
。
我需要遍历一个数组而不知道每个数据的大小是什么,并且只有当两个数组都有值时才执行命令。是的,数组长度可能不同。
这样做的最佳方式是什么?
答案 0 :(得分:3)
其他答案跳转到使用列表,我认为你的意思是Tcl's array,它们也被称为哈希映射或关联数组。
我认为你要求的是:
array set a1 {a 1 b 2 c 3 d 4 e 5}
array set a2 {z 0 x 1 b 2 e 99}
foreach n [array names a1] {
if {[info exists a2($n)]} {
puts "Do something with $a1($n) and $a2($n)"
}
}
# FOREACH LOOP RESULTS IN THESE TWO PRINTOUTS
Do something with 5 and 99
Do something with 2 and 2
答案 1 :(得分:1)
不确定“两个数组的值”究竟是什么意思,但tcl的foreach
支持同时迭代多个数组...所以你可以说例如
foreach w $W_Array p $P_Array {
if {$w == $val && $p == $val} {
...
}
}
当数组的长度不同时,foreach
将返回最长数组中的所有值,并返回任何较短数组中缺失元素的空值{}
。
答案 2 :(得分:-1)
使用llength
命令查明数组是否包含值。
if {[llength $W_Array] > 0 && [llength $P_Array] > 0} {
# Do something
}