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
廣告