Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


tcl:switch

switch

Évalue un parmi plusieurs scripts, dépendant d'une valeur donnée

Syntaxe

switch ?options? string pattern body ?pattern body ...?
switch ?options? string {pattern body ?pattern body ...?}

Description

La commande switch compare son argument string à chacun des arguments pattern dans l'ordre. Dès qu'elle trouve un pattern qui correspond à string elle évalue les argument body suivants en les transmettant récursivement à l'interpréteur Tcl et retourne le résultat de cette évaluation . Si le dernier argument pattern est default alors il correspond à tout. Si aucun argument pattern correspond à string et qu'aucun défaut n'est donné, alors switch retourne une chaîne vide.

Si les arguments initiaux de switch commencent avec - alors ils sont traités comme des options Les options suivantes sont couramment supportées:

  • -exact Utilise la correspondance exacte pendant la comparaison de string à un modèle C'est le défaut.
  • -glob Pendant la comparaison de string aux modèles, utilise une correspondance glob-style (ex. la même qu'implémentée par la commande string match).
  • -regexp Pendant la comparaison de string aux modèles, utilise la correspondance expression rationnelle (comme décrit dans la page de re_syntax).
  • Marque la fin des options L'argument suivant sera traité comme string même s'il commence avec un -.

Deux syntaxes sont fournie pour les arguments pattern et body.

  1. La première utilise un argument séparé pour chacun des modèles et commandes; cette forme est pratique si des substitutions sont désirées sur un modèle ou une commande.
  2. La seconde forme place tous les modèles et les commandes ensemble dans un seul argument; l'argument doit avoir une structure de liste correcte, avec les éléments de la liste étant les modèles et les commandes.

La seconde forme facilite la construction de commandes switch multi-ligne, puisque les accolades entourant la liste rendent inutile l'inclusion d'un antislash à la fin de chaque ligne. Comme les arguments pattern sont dans accolades dans la seconde forme, aucunes substitutions de commande ou de variable ne sont effectuée sur ceux-ci; cela rend le comportement de la seconde forme différent de la première forme dans certains cas.

Si un body est spécifié comme “-” cela signifie que le body du modèle suivant doit être aussi utilisé comme le corps pour ce modèle (si le modèle suivant a aussi un corps de “-” alors le corps qui est utilisé après, et ainsi de suite). Cette fonctionnalité rend possible de partager une seul body entre plusieurs modèles.

Attention à l'emplacement des commentaires dans les commandes switch Ils devront être placés seulement dans l'exécution du corps d'un des modèles, et pas mélangés avec les modèles.

Exemples

switch abc a - b {format 1} abc {format 2} default {format 3}
# 2
switch -regexp aaab {
   ^a.*b$ -
   b {format 1}
   library {format 2}
   default {format 3}
}
# 1
switch xyz {
   a -
   b {
      # Placement Correct du Commentaire
      format 1
   }
   library {
      format 2
   }
   default {
      format 3
   }
}
# 3

Voir aussi

tcl/switch.txt · Dernière modification : 2023/10/13 08:45 de CrazyCat