Nel precedente articolo abbiamo visto come creare un nuovo comando, ora approfondiremo alcuni aspetti relativi al passaggio degli argomenti.

Valori di default

In una procedura è possibile definire degli argomenti che abbiano dei valori di default ponendo il nome della variabile e il suo valore di default all’interno di una coppia di parenesi graffe {...}.

proc circle {radius {pi 3.141592}} {
    set c [expr {$radius * $radius * $pi}]
    return $c
}
set r 5
puts "Circle's area of the circle with a radius of $r is [circle $r]."

In questo caso abbiamo chiamato la procedura circle passondele un solo valore per l’argomento radius in modo tale che per l’argomento pi si utilizzasse il suo valore di default.

Riscrittura dei valori di default

In linea di principio, però, è possibile anche passare un secondo valore per l’argomento pi in modo tale che l’interprete non utilizzi il suo valore di default.

Numero degli argomenti

Una procedura può essere definita con un numero fisso di argomenti richiesti, oppure può essere definita con un numero variabile di argomenti.

Come definire un numero variabile di argomenti

Al momento della definizione della nostra procedura, se abbiamo l’esigenza di fare in modo che possa utilizzare un numero variabile di argomenti, possiamo inserire nella ultima posizione della lista degli argomenti la parola chiave args.

proc myList {n args} {
    puts "Composition of the list \"$n\":"
    for {set x 0} {$x <= 5} {incr x} {
        puts "$x) [lindex $args $x]"
    }
}
myList "Animal Farm" Napoleon Snowball Boxer Benjamin Moses ...

Nota: il comando lindex serve per indicare uno specifico elemento appartenente ad una lista. Vedremo meglio in seguito l’argomento liste.


Nel prossimo articolo scopriremo cosa si intende per area di visibilità delle variabili.