双阵列对应

发布于 2024-08-22 03:53:56 字数 173 浏览 5 评论 0原文

我刚刚发现自己在 Tcl 中有两个数组。

我得到了 $W_Array$P_Array

我需要遍历一个数组,事先不知道每个数组的大小是多少,并且仅当两个数组都有值时才执行命令。是的,数组长度可能不同。

这样做的最佳方法是什么?

I just found myself in a position where I have two arrays in Tcl.

I'm given $W_Array and $P_Array.

I need to traverse through one array not knowing what the size of each one is before hand, and execute a command only when there is a value for both arrays. Yes the array lengths could be different.

What is the best way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨后彩虹 2024-08-29 03:53:57

其他答案跳到使用列表,我想你的意思是 Tcl 的数组,也称为哈希映射或关联数组。

我认为你在要求类似的东西:

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

The other answers jumped to using lists, I presume you mean Tcl's array, which are also called hash maps or associative arrays.

I think you're asking for something like:

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
去了角落 2024-08-29 03:53:57

不确定“两个数组的值”到底是什么意思,但是 tcl 的 foreach 支持一次对多个数组进行迭代......所以你可以说例如
foreach w $W_Array p $P_Array {
如果 {$w == $val && $p == $val} {
...
}
}

当数组长度不同时,foreach 将返回最长数组中的所有值以及任意数组中缺失元素的空值 {}更短的数组。

Not sure exactly what you mean by "a value for both arrays", but tcl's foreach supports iteration over multiple arrays at once... so you can say e.g.
foreach w $W_Array p $P_Array {
if {$w == $val && $p == $val} {
...
}
}

When the arrays are not of the same length, foreach will return all values from the longest array and the empty value {} for the missing elements in any shorter arrays.

深爱成瘾 2024-08-29 03:53:57

使用llength命令来查明数组是否包含值。

if {[llength $W_Array] > 0 && [llength $P_Array] > 0} {
# Do something
}

Use llength command to find out if the arrays contain a value.

if {[llength $W_Array] > 0 && [llength $P_Array] > 0} {
# Do something
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文