代码之家  ›  专栏  ›  技术社区  ›  Sakamoto Kazuma

双阵列响应

  •  0
  • Sakamoto Kazuma  · 技术社区  · 15 年前

    我刚刚发现自己处在一个位置,在TCL中有两个阵列。

    我被给予 $W_Array $P_Array .

    我需要遍历一个数组,而不知道每个数组的大小是多少,并且只在两个数组都有值时执行一个命令。是的,阵列长度可能不同。

    最好的方法是什么?

    3 回复  |  直到 10 年前
        1
  •  1
  •   ccmonkey    15 年前

    不确定“两个数组的值”的确切含义,但tcl的 foreach 支持同时在多个数组上迭代…所以你可以说,例如 foreach w $W_Array p $P_Array { if {$w == $val && $p == $val} { ... } }

    当数组的长度不同时, 前额 将返回最长数组中的所有值和空值 {} 对于任何较短数组中缺少的元素。

        2
  •  3
  •   Trey Jackson    15 年前

    我想你的意思是,其他答案都跳到使用列表上了。 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
    
        3
  •  -1
  •   Andrew Dyster    15 年前

    使用 llength 用于确定数组是否包含值的命令。

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