Параметры функции в PowerShell - PullRequest
14 голосов
/ 15 мая 2009

Есть ли причина использовать конструкцию "Param (...)" внутри определения функции?

Насколько я понимаю, вы должны использовать это для указания параметров для скриптов (и блоков скриптов). Я вижу много примеров в Интернете с параметрами, перечисленными таким образом, вместо простого перечисления параметров после имени функции.

Пример:

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

Или,

function Foo{
     Param([string]$Bar)

}

Ответы [ 4 ]

19 голосов
/ 16 мая 2009

В V1 это действительно просто предпочтение. Использование оператора param традиционно было более формальным, но функционально это то же самое.

Вероятно, вы увидите гораздо большее использование PARAM в PowerShell V2 из-за возможности добавлять атрибуты к параметрам, аналогично атрибутам в C #.

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

Здесь вы можете указать атрибут параметра и набор аргументов для этого атрибута. Вы также можете указать псевдонимы и ряд других требований проверки.

Кит также делает пару замечательных замечаний. Вы можете использовать оператор param для передачи параметров в анонимные блоки скриптов ( лямбда-выражения ) или в скрипт PS1.

6 голосов
/ 16 мая 2009

param () требуется для указания параметров для файла сценария и для блоков сценария:

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

Иметь его также для традиционных функций - это просто согласованность IMO. Это лучше для продвинутых функций, которые, как правило, содержат много багажа, т. Е. Метаданных, на параметр.

1 голос
/ 15 мая 2009

Возможно, как мера согласованности? Всегда указание параметров одним и тем же способом улучшает читаемость.

0 голосов
/ 23 ноября 2013

Param - это функция, которая используется для извлечения значения переменной формы, которая передается вашей программе (может быть Perl или любой другой язык сценариев, который, вероятно, использует CGI ).

Например, в форме XHTML , когда вы используете элемент ввода (тег) и указываете тип «текст», вы также будете использовать параметр, называемый «имя». имени присваивается значение, скажем, num, и это значение должно быть параметром для функции param, чтобы она могла извлекать значение, которое пользователь вводит в текстовое поле в вашей форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...