TCL ARRAY


TCL 中的數組和其他高級語言的數組有些不同:Tcl 數組元素的索引,或稱鍵值,可以是任意的字符串,而且其本身沒有所謂多維數組的概念。數組的存取速度要比列表有優勢,數組在內部使用散列表來存儲,每個元素存取開銷幾乎相同,而列表的存取數據花非時間與其長度成正比。

 

1.

元素使用 set 命令來定義和賦值:

[語法]set  arrName(indexvalue

也可以用 array 命令來定義一個數組:

[語法]array set arrName { index1 value1 index2 value2 ...

 

Tcl 數組索引的值不象其他高級語言如 C 語言那樣,要求一定是整數。Tcl 允許索引值為包括數字字符在內的所有合法字符組成的字符串。

array set arr1 ""              ;#定義了一個空數組 
set array01(5) "Hello World" 
結果=> Hello World 

puts $array01(5) 
結果=>Hello World 

set array01(Hello) World 
結果=> World 

puts $array01(Hello)  
結果=> World 

array names array01    ;#array names 命令顯示數組元素名 
結果=> Hello 5 

array set arr2 {1 a 2 b 3 c 4 d} 
array names arr2 
結果=> 4 1 2 3 

parray arr2                    ;# 輸出數組全部內容 
結果=>  
arr2(1) = a 
arr2(2) = b 
arr2(3) = c 
arr2(4) = d 


2.多維數組

在有些時候,可能需要象 C 語言這樣:

int arr[2][2]

arr[0][0] = 100

來定義一個多維數組來處理數據。Tcl 並沒有直接支持這種數組的格式,使用者自己可以定

義所謂的多維數組,如:

復制代碼
set arr(0,0) 100

set arr(0,1) 200

parray arr

結果=> arr(0,0) = 100
      arr(0,1) = 200


 

 

 

1. array get 命令提取數組索引、元素值對並將這些值對組織成一個列表。而 array  set 命令 則將一個列表(數據要成對)轉換成一個數組。array set arr [list a AAA b BBB c CCC d DDD] 

array size arr                  ;#數組元素個數 
結果=> 4 

parray  arr 
結果=>  arr(a) = AAA arr(b) = BBB arr(c) = CCC arr(d) = DDD 

set l1 [array get arr] 
結果=> d DDD a AAA b BBB c CCC 



2.
array names命令

    array names 返回所有元素索引名與模式 pattern 匹配的元素索引名列表。模式 pattern 和 string match 的模式格式相同。如果 pattern 沒有指定,則返回所有數組元素索引名列表。

array set a [list  "School,BUPT" "BUPT" "School,NJU" "NJU" "School,NJUA" "NJUA"] % parray a 
結果=> a(School,BUPT) = BUPT a(School,NJU)  = NJU a(School,NJUA) = NJUA 

array names a "School,*" 
結果=>School,NJU School,NJUA School,BUPT 

array names a "School,N*" 
結果=>School,NJU School,NJUA 

array names a 
結果=>School,NJU School,NJUA School,BUPT













免責聲明!

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



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