La struttura dati di base del linguaggio Tcl è la lista.
Una lista è un insieme ordinato di informazioni di varia natura:
- numeri
- parole
- stringhe
- altre liste
In Tcl i comandi non sono altro che liste dove il primo elemento è il nome del comando (che possiamo anche chiamare procedura) e i seguenti elementi sono gli argomenti della procedura.
Come creare una lista
Una lista può essere create in diversi modi.
Settando una variabile come lista di valori
set lst {{item 1} {item 2} {item 3}}
Con il comando split
set lst [split "item 1.item 2.item 3" "."]
Il comando split divide una stringa in elementi sulla base di uno specifico carattere che funge da separatore. I singoli elementi andranno a formare una nuova lista.
Se si omette il carattere di separazione, Tcl considererà come carattere di separazione di default il carattere spazio.
Occorre considerare che è anche possibile specificare più caratteri di separazione come, per esempio, ".,;".
Con il comando list
set lst [list "item 1" "item 2" "item 3"]
Come accedere agli elementi di una lista
Per accedere ad uno specifico elemento di una lista, Tcl mette a disposizione il comando lindex.
lindex lst n
Il comando utilizza due argomenti: il primo argomento identifica la lista su cui lavorare, il secondo argomento è un numero intero (o una costante) che rappresenta la posizione dell’elemento nella lista.
Il primo elemento di una lista ha come suo indice il valore numerico zero (0).
Se uno o più elementi di una lista sono a loro volta delle liste, allora occorrerà specificare più indici.
Vediamo un esempio:
set myList [list "pippo" {{pluto} {paperino}}]
set myElement [lindex $myList 1 1]
puts "The element is: $myElement."
---
The element is: paperino.
Come abbiamo detto il comando
lindexutilizza normalmente dei valori numerici, ma può anche utilizzare delle costanti come, per esempio, la parolaendche indica l’ultimo elemento di una lista.
Lunghezza di una lista
Per conoscere il numero degli elementi di una lista si utilizza il comando llength.
Riprendendo l’esempio precedente:
puts "The length of myList is: [llength $myList]."
---
The length of myList is: 2.
Come scorrere gli elementi di una lista
Per scorrere gli elementi di una lista possiamo utilizzare il comando foreach. che può essere sfruttato nella sua forma di base più semplice, oppure anche in altre modalità più potenti e complesse.
Comando foreach di base
Vediamo la sintassi di questo comando nella sua forma semplificata:
foreach myElement myList bodyCode
In pratica la variabile myElement assumerà ad ogni ciclo il valore di un elemento della lista MyList, a partire ovviamente dal primo sino all’ultimo, poi, su ciascun elemento della lista, verrà eseguito il codice riportato nella parte bodyCode.
Comando foreach con più variabili
foreach {a b} $listOfPairs { ... }
Comando foreach su più liste contemporaneamente
foreach a $listOfA b $listOfB {
...
}
Nel prossimo articolo vedremo come modificare una lista.
