3
La variable $ args devrait, par définition, contenir tous les arguments passés à une fonction de script. Cependant, si je construis un pipeline dans ma fonction, la variable $ args est nulle. Quelqu'un sait pourquoi?
Voir cet exemple:
function test { 1..3 | % { echo "args inside pipeline: $args" } ; echo "args outside pipeline: $args" }
Ceci est la sortie, lorsque le passage de paramètres "bonjour":
PS> test hello
args inside pipeline:
args inside pipeline:
args inside pipeline:
args outside pipeline: hello
Y at-il une raison particulière à cela? Je sais comment contourner cela, mais je me demande si anonye peut expliquer la raison de cela.
Ok merci. Cependant je dirais toujours que ce comportement est très étrange. Et selon les développeurs, ils ont essayé de le concevoir en utilisant le principe de la plus petite surprise;) – driAn
Pour expliquer ce qui se passe ici, $ args contient tous les arguments non capturés (à défaut d'un meilleur terme) pour une commande. Dans votre exemple de pipeline, vous demandez des left args $ à partir de la commande ForEach-Object (%), car c'est le contexte dans lequel le bloc de script sera évalué. – JasonMArcher
Ce genre de chose se produit également avec la variable automatique $ _ . Vous devez regarder dans quel contexte il se trouve. – JasonMArcher