Параметры функции PowerShell - PullRequest
       5

Параметры функции PowerShell

3 голосов
/ 22 апреля 2011

Почему первый вызов квадрата работает, а второй нет:

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

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

Write-Host (square (add 1 2 ))

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

1 Ответ

4 голосов
/ 22 апреля 2011

Я думаю, вы видите проблему, но я выложу более полное описание для блага всех.

В первой строке ваш внутренний вызов add передает два параметра (целые числа). Функция возвращает int, а функция square возводит ее в квадрат.

Во второй строке вы передаете один массив, содержащий два целых числа. В результате функция add добавляет один массив к нулю и возвращает массив. Затем функция square пытается взять этот массив и умножить его на себя.

Вы должны получить ошибку, которая выглядит следующим образом:

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
...