Messages : 117
Sujets : 18
Inscription : Jan 2009
Bon, beaucoup l'aurons déjà remarqué, mais personnellement je viens juste de le voir et je suppose que d'autres personnes ne sont pas au courant, donc voici ce que j'ai "trouvé" :
Les conditions de if, elseif, while, etc, utilisent les memes expressions que expr !
Bon je sais, ca a l'air de rien vu comme ça mais ca signifie :
- Qu'on peut faire des calculs directement dans le if
- Qu'on peut utiliser les eq et autres, ainsi que des strings dans expr
- Qu'on peut executer des commandes via expr... gare aux scripts de calcul
- Que pour obtenir le resultat d'un test if, le passer dans expr c'est plus simple
Messages : 2,384
Sujets : 205
Inscription : Apr 2004
Oui et non.
La règle première d'un if, lorsqu'il contient plusieurs conditions, est de quitter sur la première condition fausse, ce qui n'est pas forcément le cas de expr.
Messages : 942
Sujets : 93
Inscription : Jul 2007
De plus, avec la forme [expr a?b:c] (équivalent à si a alors b sinon c), tu ne peux pas mettre plusieurs commandes en b ou c.
Ca convient pour des conditions simples donnant une valeur comme retour mais ça ne remplace pas If.
J'ajoute aussi que malgré ce qu'on pourrait penser, un expr n'est pas plus rapide qu'un If pour faire ça.
Toute l'actualité de mes scripts ici (dernière mise à jour le 14/07/2018)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
Messages : 140
Sujets : 9
Inscription : Jun 2008
CrazyCat a écrit :Oui et non.
La règle première d'un if, lorsqu'il contient plusieurs conditions, est de quitter sur la première condition fausse, ce qui n'est pas forcément le cas de expr.
Si bien sur,
set result [expr {($a == $b) && ($b == $c)}]
Si $a == $b est faux alors expr ne fera pas plus de calcul que nécéssaire $result = false.
Messages : 2,384
Sujets : 205
Inscription : Apr 2004
Messages : 9
Sujets : 2
Inscription : Jun 2009
Artix a écrit :- Qu'on peut executer des commandes via expr... gare aux scripts de calcul
Euuh ? Tu peux expliquer stp ?
Messages : 117
Sujets : 18
Inscription : Jan 2009
Citation :<Artix> .tcl set varartix {[putquick "PRIVMSG #chan :yep"]}
<Artix> .tcl expr $varartix + 2
<Eggdrop> yep
<Eggdrop> Tcl: can't use empty string as operand of "+"