lrange
La curiosité n’est pas un vilain défaut mais une qualité fondamentale.
lrange - Retourne un ou plusieurs éléments adjacents d'une liste
SYNTAXE
lrange liste premier dernier
DESCRIPTION
Liste doit être une liste Tcl valide. Cette commande renverra une nouvelle liste consistant des éléments premier à dernier, inclus. Premier ou dernier peuvent être end (ou une quelconque de ses abréviations) pour se référer au dernier élément de la liste. Si premier est inférieur à zéro, il est traité comme zéro. Si dernier est supérieur à ou égal au nombre d'éléments dans la liste, alors il est traité comme end. Si premier est supérieur à dernier alors une chaîne vide est renvoyée.
Note :
lrange liste premier premier
ne produit pas toujours le même résultat que
lindex liste premier
(bien que souvent il le fasse pour les champs qui ne sont pas entourés d'accolades); il produit , néanmoins, exactement le même résultat que :
list [lindex liste premier]
RS: On peut utiliser lrange pour obtenir une liste pure (sans représentation string) comme ceci:
set listePure [lrange $liste 0 end]
XiNeOs: Je ne comprends pas l'utilité de cette commande (dans l'exemple donné par RS), qu'est-ce que signifie "sans représentation string")
ulis: Je ne comprends d'autant moins que listePure est un clone de liste et qu'on peut l'obtenir simplement par [set listePure $liste]
RS: Dans quelques circonstances (comme eval), les listes pures sont plus efficaces.
AM: Il s'agit de la propriété de Tcl d'avoir deux valeurs de différents types pour chaque variable - par exemple une variable qui a la valeur 1.0 (c'est a dire, le décimal 1.0) peut avoir au même temps une représentation de type string, "1.0". Le concept est nommé "double-ported" en anglais. La commande eval transforme une séquence de strings en une liste propre séparée par tous les espaces - si un des arguments est déjà une liste propre, il n'est pas nécessaire de le séparer encore.
Attention: Ce sont des optimisations très subtiles, qu'on peut utiliser parfois !
Mis à jour le 19 septembre 2012 à 12:40 CEST par Stéphane Aulery