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 lindex utilizza normalmente dei valori numerici, ma può anche utilizzare delle costanti come, per esempio, la parola end che 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.