10
votes

Comment utiliser une variable comme valeur par défaut d'un argument TCL Proc

J'ai une variable que j'aimerais utiliser comme valeur par défaut pour un argument: xxx

est un moyen de faire cela ou de faire pour évaluer la variable dans mon procédé ?


0 commentaires

3 Réponses :


14
votes

Oui, mais vous ne pouvez pas utiliser les accolades frisées ( {} ) pour votre liste d'arguments. Vous déclarez la procédure par exemple. De cette façon: xxx

mais sachez:
La variable est évaluée au moment où la procédure est déclarée, pas lorsqu'elle est exécutée!


0 commentaires

10
votes

Si vous souhaitez qu'un argument par défaut défini uniquement en valeur au moment où vous appelez, vous devez être plus délicat. La clé est que vous pouvez utiliser Info niveau 0 pour obtenir la liste des arguments à l'appel de procédure en cours, puis vous simplement vérifier la longueur de cette liste: xxx p > N'oubliez pas que lors de la vérification de la liste des arguments, le premier est le nom de la commande elle-même.


3 commentaires

+1 Pour vérifier le nombre d'arguments fournis, vs vérifiant simplement pour voir si la sortie était la chaîne vide! Eh bien, vous obtiendrez un +1 pour la réponse utile, mais je suis content que vous l'ayez fait de cette façon :)


Excellente réponse, mais faites attention à ce que vous ne pouvez pas discriminer entre un utilisateur donnant à la commande 'log enfoncé "" "et" log enfoncé ". Vous pouvez modifier la chaîne de sortie par défaut (changer »), mais vous obtenez un problème similaire avec la nouvelle valeur. Peut ne pas arriver souvent mais quand ça se passe ...


@Roalt: Voulez-vous dire que ce commentaire sur l'autre réponse? Avec le mien, vous pouvez distinguer simplement compter combien de valeurs ont été fournies. C'est si facile.



1
votes

Une autre façon de faire ceci: xxx


0 commentaires