![]() |
|
[Tuto] liste, chaines, args... - Version imprimable +- Communauté Eggdrop (https://forum.eggdrop.fr) +-- Forum : Eggdrop et scripts (https://forum.eggdrop.fr/forumdisplay.php?fid=8) +--- Forum : F.A.Q. (https://forum.eggdrop.fr/forumdisplay.php?fid=9) +--- Sujet : [Tuto] liste, chaines, args... (/showthread.php?tid=1845) |
liste, chaines, args... - CrazyCat - 16/12/2025 Ceci fait suite à une conversation sur le canal anglophone #eggdrop. Un utilisateur expliquait son souci: Citation :(traduction automatique, flemme) Le code en question: tcl Il y a là de multiples erreurs de compréhension du fonctionnement de TCL. Tout d'abord, args place dans une liste tous les arguments reçus et non déclarés. Ensuite, lrange fait un split sur le texte, et donc retourne une liste.Donc, dans ReplaceHosts, l'appel de replacehosts est équivalent à faire replacehosts <machin> {host1 host2 host3}, et $args contient donc {{host1 host2 host3}}.La solution choisie par l'utilisateur est d'utiliser {*}$args, perdant ainsi tout le bénéfice de recevoir une liste. Il pensait aussi à faire un double foreach, qui est une solution encore plus bancale imho.La bonne pratique aurait été d'utiliser [join [lrange ...]] pour bien avoir un texte, et maitriser ce qui est passé à la procédure, plutôt que de tripoter la procédure réceptrice en ayant des assertions sur ce qu'elle reçoit.Encore une fois, je rappelle qu'en TCL, il y a fort peu de différences entre listes et chaînes, et que cela peut provoquer des choses très étranges. Donc, maîtrisez vos types de données et n'utilisez pas l'un pour l'autre. |