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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM