检查 Tcl 中具有多个键的数组中是否存在键

Check existence of a key in an array with multiple keys in Tcl

有没有办法检查具有多个键的数组中的键是否存在?即...

    set test_arr(n1_temp,x_cell) 3

#正如你所看到的,test_arr 包含两个名为 n1_tempx_cell 的键,现在我想知道是否可以检查名为 [=13= 的键是否存在]

    if {[info exists test_arr(n1_temp)] } { ## not working 
    }

请帮忙

-问候, 希卡

As you can see that test_arr cotains two keys named n1_temp and x_cell

不,它有一个名为 n1_temp,x_cell 的键。

改用 dict,它支持实际的多维结构:

dict set test_dict n1_temp x_cell 3
if {[dict exists $test_dict n1_temp]} {
    # ...
}

您的数组有一个元素,名为 n1_temp,x_cell,名称中有一个逗号。

您可以通过测试array names test_arr n1_temp,*的结果列表的长度来检查名称的第一部分是否有任何带有n1_temp的元素(这是一个全局匹配)。请注意,这实际上是一项昂贵的操作,因为它必须对数组中的所有元素进行线性扫描。

if {[llength [array names test_arr n1_temp,*]]} {
    puts "There's an n1_temp,* element present"
}