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