If & Expr, c'est pareil o.O
#1
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
Répondre Avertir
#2
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.
Répondre
#3
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.
Répondre Avertir
#4
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.
Répondre Avertir
#5
Ok, merci de l'info
Répondre
#6
Artix a écrit :- Qu'on peut executer des commandes via expr... gare aux scripts de calcul
Euuh ? Tu peux expliquer stp ?
Répondre Avertir
#7
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 "+"
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté