Dis que j'ai une liste TCL et j'ai apporté quelques éléments à ma liste. Maintenant, je veux vérifier si j'ai annoncé 6 ou 7 éléments.
Pour vérifier si l'élément de liste existe à l'endroit spécifié par un index que j'ai utilisé: p> Mais des coutures cela ne fonctionne pas. Comment je devrais faire ça? correctement? Il est correct de vérifier si {[Lindex $ myList 6]]] EQ ""} strong> p> p>
3 Réponses :
Pourquoi n'utilisez-vous pas Bien sûr, si vous souhaitez vérifier l'élément à un index spécifique , alors utilisez ensuite Votre code à l'aide de llthongueur code> pour vérifier la longueur de votre liste:
lindex code> pour récupérer cet élément et vérifier cela. par exemple.
si {[Lindex $ myList 6] == "quelque chose"}} code> p>
info Existe code> ne fonctionne pas, car le
Info existe code> contrôles de commande si une variable existe. Donc, vous vérifiez essentiellement s'il existe une variable dont le nom est égal à la valeur renvoyée par
[lindex $ myList 6] code>. P> p>
Qu'est-ce que tu veux dire mon "quelque chose"? J'ai utilisé si {[Lindex $ myList 6]]] EQ ""} Pour vérifier si le 7ème élève existe. Si cela n'existe pas, je suis dans le corps de la déclaration IF. Est-il recommandé d'utiliser?
"Quelque chose" est juste une corde aléatoire que j'ai choisi pour mon exemple. Vous pouvez bien sûr remplacer cela avec n'importe quelle chaîne que vous aimez. Le si {[Lindex $ myList 6]] == ""} code> fonctionnera probablement, mais il a une faille. Supposons que vous ayez la liste suivante:
Set L {1 2 3 4 5 6 ""} code>. Cette liste a 7 éléments (cochez la sortie de
llength $ l code>). Mais votre code traiterait cette liste comme s'il n'avait que 6 éléments. Si vous souhaitez vérifier si un élément existe à l'index
x code>, utilisez
llthongueur code> pour vérifier si la liste est aussi longue, elle est définitivement plus explicite. Si vous ne voulez pas vérifier si l'élément a une valeur spécifique utilise
lindex code>.
Sa vaut noter que la solution que l'OP utilise ([Lindex $ MyList 6]) n'est pas sémantiquement équivalente à la question qu'il tente de demander (cette liste a-t-elle 6 éléments). Je suis un grand partisan du code exprimant ce qu'il tente d'accomplir. La réponse postée ici par Überjesus ([Llength $ MyList] == 6) exprime la question qui est réellement posée, même si elles fonctionnaient correctement, ce serait la meilleure option.
J'ai trouvé cette question parce que je voulais vérifier si une liste contient un élément spécifique em>, plutôt que de vérifier la longueur de la liste. Pour voir si un élément existe dans une liste, utilisez le Le lSearch code>
Fonction: p> lSearch code> La fonction renvoie l'index du premier élément trouvé ou
-1 code> si l'élément donné n'a pas été 't trouvé. Via le
-exact code>,
-glob code> (qui correspond à la valeur par défaut) ou
-regexp code> options, le type de recherche de modèle peut être spécifié. p> p>
Une autre façon de vérifier l'existence d'une liste dans TCL est de simplement utiliser "dans", par exemple: Il est légèrement plus propre / plus lisible! P> p >