.
.
名稱
array - 處理數組變量
語法
array option arrayName ?arg arg ...?
描述
這個命令執行幾種可選項中的一個操作,操作的對象爲arrayName,除非以下的命令特殊聲明,否則arrayName必須是存在的數組變量名稱。option變元決定了要對數組變量進行什麼樣的操作,具體如下:
- array anymore arrayName searchId
- 如果在一次數組搜索當中數組中還有剩餘的元素就返回1,如果沒有剩餘的元素就返回0。searchId指定了被檢查arrayName的搜索標示符,這個標示符必須是命令array startsearch返回的搜索標示符。這個命令在數組有空索引的元素時非常有用,因爲array nextelement的返回值並不能說明搜索是否完畢。
- array donesearch arrayName searchId
- 這個命令終結一次數組搜索,searchId指出了需要終結的數組搜索標示符,這個標示必須是命令array startsearch返回的搜索標示符。返回一個空字符串。
- array exists arrayName
- 如果arrayName是一個數組變量就返回1,如果沒有這個變量或者是非數組變量就返回0。
- array get arrayName ?pattern?
- 返回一個列表,列表中的元素是成對的,交替的出現索引和對應數組值,如果不指定pattern,所有數組的元素都回返回,如果指定了pattern,只有匹配pattern(與string match匹配風格相同)的數組元素返回。如果arrayName不是一個數組變量的名字或者沒有包含任何元素就返回一個空列表。
- array names arrayName ?mode? ?pattern?
- 返回一個匹配pattern的數組元素索引的列表,mode可以是-exact、-glob或-regexp中的一個,指定了匹配的風格,如果不指定mode,默認爲-glob。如果需要了解詳細的匹配風格請參考string match和regexp。如果不指定pattern則返回數組中所有的索引,如果arrayName不是一個數組變量的名字或者沒有包含任何元素就返回一個空列表。
- array nextelement arrayName searchId
- 返回arrayName數組中的下一個元素索引,如果數組中所有的元素都搜索到了就返回空字符串,searchId指出了需要終結的數組搜索標示,這個標示必須是命令array startsearch返回的搜索標示。警告:如果數組中有添加和刪除元素的操作,那麼所有的搜索都回自動結束,就像是調用了array donesearch,這將會導致array nextelement操作失敗。
- array set arrayName list
- 設置一個或多個數組元素,list必須是像array get返回值風格的列表,第奇數個列表元素被認爲是arrayName的一個元素索引,緊接着的第偶數個列表元素就被當作前一個元素的數組中的值,如果變量arrayName不存在或者爲空,就創建一個空數組arrayName。
- array size arrayName
- 返回一個十進制的字符串數值來指出數組中元素的數量,如果arrayName不是一個數組的名字就返回0。
- array startsearch arrayName
- 這個命令開始在arrayName數組中進行一個元素一個元素的搜索,array nextelement命令返回下一元素的索引,當搜索完畢,array donesearch命令必須調用,返回值是一個搜索標示符,這個搜索表示符可以在array nextelement和array donesearch中使用來標示操作的搜索,通過使用搜索標示符允許對一個數組同時進行不同的搜索。目前,普遍使用的方式是使用array get和array names與foreach一起使用來遍歷數組中的每一個元素。具體請參考下面的示例。
- array statistics arrayName
- 返回數組中元素在哈希表的分配方式的統計,這個命令包含表格中條目數,buckets數目和buckets的利用情況。
- array unset arrayName ?pattern?
- 刪除數組中所有匹配pattern的元素(與string match匹配風格相同),如果arrayName不是一個數組變量或者沒有匹配到任何元素,不會產生錯誤,如果忽略了pattern變元並且arrayName是一個數組名稱,這個命令將刪除整個數組所有的元素,這個命令總是返回一個空字符串。
示例
array set colorcount {
red 1
green 5
blue 4
white 9
} foreach {color count} [array get colorcount] {
puts "Color: $color Count: $count"
}
Color: blue Count: 4
Color: white Count: 9
Color: green Count: 5
Color: red Count: 1
foreach color [array names colorcount] {
puts "Color: $color Count: $colorcount($color)"
}
Color: blue Count: 4
Color: white Count: 9
Color: green Count: 5
Color: red Count: 1 foreach color [lsort [array names colorcount]] {
puts "Color: $color Count: $colorcount($color)"
}
Color: blue Count: 4
Color: green Count: 5
Color: red Count: 1
Color: white Count: 9 array statistics colorcount
4 entries in table, 4 buckets
number of buckets with 0 entries: 1
number of buckets with 1 entries: 2
number of buckets with 2 entries: 1
number of buckets with 3 entries: 0
number of buckets with 4 entries: 0
number of buckets with 5 entries: 0
number of buckets with 6 entries: 0
number of buckets with 7 entries: 0
number of buckets with 8 entries: 0
number of buckets with 9 entries: 0
number of buckets with 10 or more entries: 0
average search distance for entry: 1.2