【问题标题】:array comparison in TCL ns2TCL ns2中的数组比较
【发布时间】:2017-06-06 04:31:12
【问题描述】:

我想要一个数组与另一个数组进行比较的代码/一些提示。 如果数组的一个元素与另一个数组中的元素匹配,则使用 puts 语句返回 0,否则使用某些 puts 语句返回 0。 我尝试在互联网上搜索,但找不到任何有用的东西。

array set foodColor {
    Apple   red
    Banana  yellow
    Lemon   yellow
    Carrot  orange
}

array set citrusColor {
        Lemon   yellow
        Orange  orange
        Lime    green
}

# build up a list of non-citrus foods
foreach k [array names citrusColor] {
        if {![info exists foodColor($k)]} {  
              puts $k;
        }

}

在此代码中,输出显示与其他数组中的值不匹配的值。 但我不想在数组中进行字符或字符串比较,如果匹配显示输出匹配,我希望与另一个数组进行完整数组比较,否则不匹配。

【问题讨论】:

  • 请添加有关比较的更多详细信息。例如添加一个示例输出。
  • 在循环 citrusColor 时,您需要设置一个标志来指示哪些 foodColor 项目已被检查。然后遍历 foodColor,检查没有标志的项目。

标签: tcl ns2


【解决方案1】:

你想要这个吗?

if { [info exists citrusColor($key)] && 
     [info exists foodColor($key)] && 
     $citrusColor($key) eq $foodColor($key)
} {
    puts "Key $key is in both arrays with the same value"
    return 0
} else {
    puts "Key $key is either missing or has a different value"
    return 1
}

【讨论】:

    【解决方案2】:

    array set的语法如下,

    array set arrayName list

    设置arrayName 中一个或多个元素的值。列表必须有一个 类似于数组get返回的形式,由偶数组成 元素。列表中的每个奇数元素都被视为一个元素 arrayName 中的名称,并且列表中的以下元素用作 该数组元素的新值。如果变量 arrayName 没有 已经存在并且列表为空,arrayName 是用空创建的 数组值。

    你应该得到以下错误

    wrong # args: should be "array set arrayName list"
    

    代码可以改写为,

    array set food {
        Apple   red
        Banana  yellow
        Lemon   yellow
        Carrot  orange
    }
    array set citrus {
            Lemon   yellow
            Orange  orange
            Lime    green
    }
    
    
    foreach k [array names citrus] {
        if {[info exists food($k)]} {
            puts "The key '$k' is available in both arrays"
        }
    }
    

    输出:

    The key 'Lemon' is available in both arrays
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      相关资源
      最近更新 更多