Tcl数组命令之array

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

 

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值