Voici le code que je teste :
proc check_eval {} {
set cmd {set return_val {}; set return_val}
puts "Command to evaluate : $cmd"
uplevel eval $cmd
}
J'ai rencontré le problème suivant : lorsque j'appelle "check_eval", il semble que l'instruction "set return_val {}" soit ignorée. En d'autres termes, l'interpètre recherche la variable return_val existante dans le champ d'application de l'appel. Exemple :
tcl>unset return_val
tcl>check_eval
Command to evaluate : set return_val {}; set return_val
can't read "return_val": no such variable
while evaluating check_eval
tcl>set return_val 556
556
tcl>check_eval
Command to evaluate : set return_val {}; set return_val
556
tcl>
En revanche, si je remplace "set return_val {}" dans la procédure par, par exemple, "set return_val 10000", elle affichera 10000 lors de son exécution :
tcl>set return_val 556
556
tcl>check_eval
Command to evaluate : set return_val 10000; set return_val
10000
tcl>set return_val
10000
Quelqu'un peut-il m'expliquer ce qui se passe ici ?
Gracias.