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"
}
假设我们有一个二维散列。
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"
}