Lsearch

Un article de Communaute francophone sur les Eggdrops.
Jump to: navigation, search

lsearch - Recherche un élément particulier dans une liste.

Syntaxe

lsearch ?''mode''? ''list pattern''

Description

Cette commande recherche les éléments de list pour voir si l'un d'eux correspond à pattern. Si c'est le cas, la commande retourne l'index du premier élément correspondant. Sinon, la commande retourne -1. L'argument mode indique comment les éléments de la liste doivent correspondre à pattern et il doit avoir une des valeurs suivantes:

  • -exact : L'élément de la liste doit contenir exactement la même chaîne que pattern.
  • -glob : Pattern est un modèle glob-style qui est comparé à chaque élément de liste en utilisant les mêmes règles que la commande string match.
  • -regexp : Pattern est traité comme une expression rationelle et comparé à chaque élément de la liste en utilisant les règles décrites dans la page de référence re_syntax.

Si mode est omis alors il est par défaut de -glob.

  • -nocase : Depuis la version 8.5 de TCL, il est possible d'utiliser le switch -nocase pour faire une recherche sans tenir compte de la casse.
  • -inline : Retourne les éléments de la liste plutôt que leur index dans la liste de recherche.
  • -all : Retourne toutes les occurences dans la liste donnée plutot que le premier élément trouvé.
  • -index : Fait les recherches sur un index donné de chaque élément de la liste, plutôt que sur tout l'élément.

Un exemple pratique peut être de l'utiliser pour rechercher des timers : par exemple, voici une alternative à timerexists de alltools.tcl qui utilise foreach & string match, mais en utilisant lsearch :

lindex [lsearch -inline -index 1 [timers] "codeDuTimer"] 2

Pour chaque élément renvoyé par timers, on retrouve 3 éléments, dans l'ordre : le temps restant, la commande exécutée, et le numéro d'identification du timer. Ici, on veut rechercher dans la commande, donc dans l'index 1 de la liste. On rajoute le switch -inline pour récupérer l'entrée de la liste, et on récupère ensuite l'élément qui nous interesse (l'identificateur du timer) avec un lindex.

Voir également

list, llength, lindex, lrange, linsert, lreplace, lappend, concat, split, join, lsort, lrepeat, lset, Utilisation des listes

Récupérée de « http://wiki.eggdrop.fr/Lsearch »