В отличие от традиционных языков программирования, где функция возвращает единственное значение определенного типа, в Windows PowerShell результаты всех вычислений направляются в так называемый выходной поток. Давайте посмотрим, как это выглядит на практике.
Создадим функцию Primer, которая будет выполнять три математических операции.
Function Primer {1+1; 2*2; 10/2}
Далее запустим функцию и посмотрим на результаты её работы.
Как видим, функция возвращает три значения в качестве результата своей работы.
Данные результаты можно сохранить. Используем для этого переменную $Result.
$Result=Primer
Проверим тип переменной.
$Result.GetType().FullName
Итак, переменная $Result есть не что иное, как массив. Можно просмотреть длину этого массива и значения его элементов.
Собственно, может напроситься вопрос, а какого практическое значение полученной нами информации о возвращаемых значениях? Дело в том, что PowerShell по умолчанию будет записывать в наш массив $Result все значения, которые выводились на экран во время работы функции. Подобное необходимо далеко не всегда. Приведем пример.
Создадим простенькую функцию, которая будет поздравлять с Новым годом.
Function Primer {
$year=Read-Host "Введите год"
"С Новым $year годом!"
$year
}
Посмотрим возвращаемые функцией значения.
Как видим, функция вернула два значения. Хотя, наверное, логичнее было бы, если бы в массив попало только значение переменной $year.
Чтобы избежать попадание в выходной поток ненужных нам данных, мы можем воспользоваться командлетом Write-Host. Такой командлет выведет данные непосредственно в консоль, а не в выходной поток.
Function Primer {
$year=Read-Host "Введите год"
Write-Host "С Новым $year годом!"
$year
}
Лишнее также можно отсечь инструкцией Return. Данная инструкция аналогична инструкции Break в циклах PowerShell и выполняет немедленный выход из функции.
Function Primer {
"Данная запись выводится на экран"
Return
"А вот эта запись не выводится на экран"
}
Статьи по теме: