TCL 哈希通配符用法?

TCL hash wildcard usage?

假设我们有一个二维散列。

set a(1,x) abc
set a(2,x) def

现在我想知道 'x' 是否存在于两者中。 我能做到:

info exists a(1,x) && info exists a(2,x)

我可以把它放到一个循环中,但开始看起来很笨重。

有通配符的方法吗?这种幼稚的想法显然行不通

info exists a(*,x)

有什么解决办法吗?

您需要此处的 array names 命令:

set all_names [array names a]
set x_names [array names a "*,x"]    ;# quotes not strictly required here

if {[llength $all_names] == [llength $x_names]} {
    puts "all array keys have x"
} else {
    puts "some array keys don't have x"
}