TCL陣列


陣列是一組使用索引對應元素的排列方式。常規陣列的語法如下所示。

set ArrayName(Index) value

用於建立簡單陣列的例子,如下所示。

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0)
puts $languages(1)

當上述程式碼被執行時,它會產生以下結果。

Tcl
C Language

陣列大小

用於計算陣列大小的語法,如下所示。

[array size variablename]

用於列印陣列的大小的範例如下所示。

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts  [array size languages]

當上述程式碼被執行時,它會產生以下結果。

2

陣列疊代

雖然陣列索引可以是非連續的,像索引1,然後索引10等指定的值。但是如果它們是連續的,我們可以用陣列疊代存取陣列的元素。一個簡單的陣列疊代的列印元素,如下所示。

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 }  { $index < [array size languages] }  { incr index } {
      puts "languages($index) : $languages($index)"
}

當上述程式碼被執行時,它會產生以下結果。

languages(0) : Tcl
languages(1) : C Language

關聯陣列

在TCL,所有陣列本質是相關聯的。陣列儲存並沒有任何具體的順序進行檢索。關聯陣列使用索引但不一定都是數位。一個簡單的例子,關聯陣列與非數位索引如下所示。

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts  $personA(Name)
puts  $personA(Age)

當上述程式碼被執行時,它會產生以下結果。

Dave
14

陣列的索引

用於檢索陣列索引的語法如下所示。

[array names variablename]

用於列印陣列的大小的範例如下所示。

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]

當上述程式碼被執行時,它會產生以下結果。

Age Name

關聯陣列疊代

可以使用陣列的索引來遍歷陣列。如下例子所示。

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
   puts "personA($index): $personA($index)"
}

當上述程式碼被執行時,它會產生以下結果。

personA(Age): 14
personA(Name): Dave