array
array option arrayName ?arg1 arg2 ... argN?
操作名为arrayName的数组,option选项决定了执行什么操作。option支持以下选项:
set
array set arrayName list
向数组中添加一个或多个元素,list由偶数个元素组成。奇数个元素被视为数组的索引,其后跟着的元素为索引对应的值。如果arrayName不存在且list为空,则使用空数组值创建数组arrayName。
unset
array unset arrayName ?pattern?
删除所有与pattern匹配的元素,匹配规则与string match一致。 如果arrayName不是数组变量的名称,或者数组中没有匹配的元素,不会引发错误。如果没有指定pattern,则会删除数组中的所有元素。该命令总是返回一个空字符串。
get
array get arrayName ?pattern?
返回索引与pattern匹配的元素对的列表。列表中奇数个元素是匹配的索引,其后的元素是索引对应的值。如果没有指定pattern,则返回所有元素。匹配规则与string match一致。如果arrayName不是数组变量的名称,或者没有匹配的索引,则返回空列表。
size
array size arrayName
返回数组中元素数量,如果arrayName不是数组的名称,则返回0。
statistics
array statistics arrayName
返回表示数组的哈希表中数据分布的统计信息。信息包括表中的条目数、桶的数量和桶的使用情况。
exists
array exists arrayName
如果arrayName是数组变量则返回1,如果arrayName不存在或者不是数组变量则返回0。
names
array names arrayName ?mode? ?pattern?
返回一个包含mode模式下与pattern匹配的数组索引的列表。mode可以是-exact、-glob或-regexp,默认为-glob与lsearch中的匹配模式含义相同。如果未指定mode与pattern则返回所有索引。如果没有匹配的索引或者arrayName不是数组变量的名称,则返回空字符串。
startsearch
array startsearch arrayName
通过arrayName指定的数组初始化一个逐个元素的搜索,这样调用array nexelement命令将返回单个数组元素的索引。当搜索完成后,需要调用array donesearch命令。返回值是一个用于array nextelement和array donesearch命令的标识符,允许对同一数组同时进行多个搜索。目前遍历非常大的数组时,使用foreach命令与array get或array names命令一起使用更高效、简洁。
nextelement
array nextelement arrayName searchId
返回arrayName中下一个元素的索引,如果arrarName中所有元素的索引都已经返回了,则返回空字符串。searchId是由array search命令的返回值。如果数组添加或删除了元素,那么所有的搜索都会自动终止,就像调用了array donesearch命令一样,会导致这些搜索的array nextelement命令操作失败。
anymore
array anymore arrayName searchId
如果数组搜索中还有要处理的元素,则返回1,如果所有元素都已经返回,则返回0。searchId表示要检查arrayName上的那个搜索,searchId是在此之前调用的array search命令的返回值。此命令对于数组中元素的索引有空值时非常有用,因为array nextelement命令的返回值不能确认搜索是否已经完成。
donesearch
array donesearch arrayName searchId
此命令终止数组搜索并销毁与该搜索关联的所有状态。searchId表示要销毁arrayName上的哪个搜索,searchId是在此之前调用的array search命令的返回值。此命令返回值为空字符串。
array set arr {}
array size arr
array set arr {a 1 b 2 c 3 ab 4}
array size arr
array get arr a*
array names arr a*
array names arr -exact a
array names arr
array statistics arr
set searchId [array startsearch arr]
while {[array anymore arr $searchId]==1} {puts [array nextelement arr $searchId]}
array donesearch arr $searchId
array unset arr a*
array size arr
array exists arr
array unset arr
array size arr
array exists arr
array exists arr1