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
#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.
Présent sur le Tchat francophone
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.
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.
Répondre
#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
#5
Ok, merci de l'info
Présent sur le Tchat francophone
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
#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


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit - Discutez en toute liberté - Transitionnez vers Linux - Discussions dans le Lauragais - Communauté LGBT respectueuse - soutien aux victimes de cybermalveillance - pour les filles par les filles