Tcl - Arrays

Um array é um arranjo sistemático de um grupo de elementos usando índices. A sintaxe da matriz convencional é mostrada a seguir.

set ArrayName(Index) value

Um exemplo de criação de array simples é mostrado abaixo.

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

Tcl
C Language

Tamanho da Matriz

A sintaxe para calcular a matriz de tamanho é mostrada abaixo.

[array size variablename]

Um exemplo de impressão do tamanho é mostrado abaixo.

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

2

Iteração de array

Porém, os índices da matriz podem ser não contínuos como os valores especificados para o índice 1, o índice 10 e assim por diante. Mas, no caso de serem contínuos, podemos usar a iteração do array para acessar os elementos do array. Uma iteração de array simples para imprimir elementos do array é mostrada abaixo.

#!/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)"
}

Quando o código acima é executado, ele produz o seguinte resultado -

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

Matrizes Associativas

Em Tcl, todos os arrays por natureza são associativos. Os arrays são armazenados e recuperados sem qualquer ordem específica. As matrizes associativas têm um índice que não é necessariamente um número e podem ser preenchidas de forma esparsa. Um exemplo simples de matriz associativa com índices não numéricos é mostrado abaixo.

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

Dave
14

Índices de Matriz

A sintaxe para recuperar índices de array é mostrada abaixo.

[array names variablename]

Um exemplo de impressão do tamanho é mostrado abaixo.

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

Age Name

Iteração de Matriz Associativa

Você pode usar os índices de array para iterar por meio do array associativo. Um exemplo é mostrado abaixo.

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

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