2011-04-22 3 views
3

Pourquoi le premier appel au travail carré, mais le second n'a pas:fonction Powershell Paramètres

function add ($arg1,$arg2){ 
    return $arg1 + $arg2 
} 

function square ($arg1){ 
    $arg1 * $arg1 
} 

Write-Host (square (add 1 2)) 

Write-Host (square (add (1, 2))) 
+0

Je viens de voir que des virgules ne sont pas utilisés pour passer des arguments en Powershell. – Kyle

Répondre

4

Je pense que vous voyez le problème, mais je vais poster une description plus complète pour le bien de tous.

Dans votre première ligne, votre appel interne à add passe deux paramètres (entiers). La fonction renvoie un int et la fonction square le place.

Sur la deuxième ligne, vous passez un tableau contenant deux entiers. Cela aboutit à la fonction add ajoutant un tableau à rien et renvoyant un tableau. Ensuite, la fonction square essaie de prendre ce tableau et de le multiplier par lui-même.

Vous devriez obtenir une erreur qui ressemble à ceci:

Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Int32". 
At line:1 char:8 
+ (1,2) * <<<< (1,2) 
    + CategoryInfo   : NotSpecified: (:) [], RuntimeException 
Questions connexes