2009-05-15 10 views
14

Y a-t-il une raison d'utiliser la construction "Param (...)" dans une définition de fonction? Je comprends que vous devriez utiliser ceci pour spécifier des paramètres aux scripts (et aux scriptsblocks). Je vois beaucoup d'exemples sur le web avec des paramètres listés de cette façon au lieu de simplement lister les paramètres après le nom de la fonction.Paramètres de fonction dans PowerShell

Exemple:

function Foo([string]$Bar){ 
    #Body of function 
} 

Ou,

function Foo{ 
    Param([string]$Bar) 

} 
+0

Peut-être que quelqu'un a une meilleure réponse, mais je vote parce que «c'est entièrement une question de goût». –

+0

Trouvé ceci qui suggère que vous avez raison: http://www.vistax64.com/powershell/62095-powershell-arguments-param-vs-args.html –

+0

Question éditée pour inclure des scriptsblocks. –

Répondre

19

En V1, c'est vraiment une préférence. L'utilisation de la déclaration param a toujours été plus formelle, mais fonctionnellement, c'est la même chose.

Vous verrez probablement beaucoup plus d'utilisation de PARAM dans PowerShell V2 en raison de la possibilité d'ajouter des attributs aux paramètres, similaires aux attributs en C#.

param 
(
[Parameter(Mandatory=$true, 
      Position=0, 
      ValueFromPipeline = $true, 
      ValueFromPipelineByPropertyName = $true)] 
[Alias("name")] 
[String] 
$path 
) 

Ici, vous pouvez spécifier l'attribut de paramètre et un tas d'arguments à cet attribut. Vous pouvez également spécifier des alias et un certain nombre d'autres exigences de validation. Keith fait également quelques bons points. Vous pouvez utiliser l'instruction param pour transmettre des paramètres à des scripts script (lambda expressions) ou à un script PS1.

1

Peut-être en mesure de cohérence? Toujours spécifier les paramètres de la même manière améliore la lisibilité.

6

param() est nécessaire pour spécifier les paramètres d'un fichier de script et scriptblocks:

PS> $sb = {param($x,$y) $x + $y} 
PS> &$sb 1 3 
4 

l'avoir également disponible pour les fonctions traditionnelles est juste une chose de cohérence OMI. C'est plus agréable pour les fonctions avancées qui ont tendance à avoir beaucoup de bagages, des métadonnées par paramètre.

-1

Param est une fonction utilisée pour extraire la valeur d'une variable de formulaire transmise à votre programme (peut être Perl ou n'importe quel langage de script utilisant probablement CGI). Par exemple, dans un formulaire XHTML, lorsque vous utilisez un élément d'entrée (étiquette) et spécifiez le type à "texte" vous utiliserez également un paramètre appelé "nom". nom est donné une valeur, disons num, et cette valeur devrait être le paramètre de la fonction param afin qu'il puisse extraire la valeur que l'utilisateur entre dans la zone de texte de votre formulaire.

Questions connexes