Règle 10

 

Commentaires

Si le caractère dièse « # » apparait là où Tcl attend la première lettre du premier mot d’une commande, ce caractère et tout ceux qui suivent sont ignorés, jusqu’à la première fin de ligne non protégée. En dehors de cette position, le caractère dièse n’a pas de valeur particulière.

Exemples

 # ceci est un commentaire

Mais ici il n’y a pas de commentaire :

 puts [llength [list ici le dièse # ne commente rien]]
   => 7

Pour placer un commentaire en fin de ligne, il faut le séparer de la commande qui précède par le caractère habituel de séparation de commandes «;» (règle 1).

 puts toto;#Ceci est un commentaire. Noter le caractère ";"
   => toto

 puts truc#bidule
   => toto#bidule

Dans l’exemple suivant, l’antislash (règle 9) protège la fin de ligne qui perd sa valeur de fin de commentaire.

 # ce commentaire \
   est étalé sur deux lignes

Cette technique est utilisée dans les trois lignes magiques en début des scripts Tcl directement exécutables sous Unix

 #!/bin/sh
 # Le shell Unix exécute la ligne suivante. Au contraire, "tclsh" n'y voit que la suite du commentaire \
 exec tclsh "$0" ${1+"$@"}

Kroc - 28/03/07 : Attention !

L'interpréteur Tcl appaire [1] les accolades, les crochets et les guillemets avant de considérer les dièses. Donc dans le cas suivant :

 proc ahbenzut {} {
    puts "Ben pourquoi ?"
    set i 3
    while {$i} {
        puts $i
        incr i -1
 # puts "a"}
 puts fin
 # puts "b"}

En cas d’exécution on aura :

 % ahbenzut
 Ben pourquoi ?
 3
 2
 1
 fin

Explications :

Il arrive donc, dans certains cas, qu’un # ne commente pas toute la ligne.

Il en résulte également que les guillemets et crochet doivent toujours être appairés sans tenir compte des lignes commentées.

Donc, ce genre de chose n’aura pas du tout l’effet escompté :

 # proc maproc {a b c} {
 proc maproc {args} {
     ...
 }

Discussions


Cf. discussion du 2005-01-08 sur règle 1


Douze règles