Mastodon

Il comando info, che abbiamo iniziato a conoscere nei due precedenti articoli, include una serie di altri sottocomandi per ottenere diverse informazioni sulle procedure:

  • info body procName: restituisce il corpo della procedura procName.
  • info args procName: restituisce la lista dei nomi degli argomenti della procedura procName.
  • info default procName arg varName: restituisce 1 se l’argomento arg della procedura procName ha un valore di default e, in tal caso, assegna questo valore di default alla variabile varName, altrimenti restituisce 0.

Conoscere queste informazioni ci permette di:

  • Accedere ai contenuti di una procedura da un debugger.
  • Generare delle procedure ad hoc da una procedura utilizzata come modello (template).
  • Ottenere dei valori di default quando si deve immettere dei valori in input.

Esempio

proc myProc {arg1 {arg2 "Giovanni"}} {
    puts "arg1: $arg1"
    puts "arg2: $arg2"
}

puts "Step #1"
myProc Stefania

puts "\nStep #2"
myProc Maria Luca

puts "\nStep #3: body"
puts [info body myProc]

puts "\nStep #4: args"
puts [info args myProc]

puts "\nStep #5: default"
puts "arg1: [info default myProc arg1 myVar] | myVar: $myVar"
puts "arg2: [info default myProc arg2 myVar] | myVar: $myVar"

---

Step #1
arg1: Stefania
arg2: Giovanni

Step #2
arg1: Maria
arg2: Luca

Step #3: body
    puts "arg1: $arg1"
    puts "arg2: $arg2"

Step #4: args
arg1 arg2

Step #5: default
arg1: 0 | myVar: 
arg2: 1 | myVar: Giovanni

Nel prossimo articolo discuteremo di debugging e di errori.