пятница, 7 января 2011 г.

Powershell splatting

Эта фишка позволяет упростить вызов командлетов и функций с большим числом передаваемых параметров. Верней, ускорить набор кода, с такими вызовами и сократить его объем. Рассмотрим пример:

cls
function test ($x, $y, $z){
write-host "x:" $x
write-host "y:" $y
write-host "z:" $z
}

#обычный вызов
test 1 2 3

#задаем хэш таблицу. В качестве ключей - имена параметров функции.
$params = @{
x=6
y=7
z=8
}

#вызов функции. указываем, что параметры надо брать в хэш таблице
test @params

Splatting позволяет создать хэш таблицу, в которой в качестве ключей используются имена параметров функции или командлета. Затем, при помощи хитрого синтаксиса со знаком @(at), созданная таблица передается функции. И она, в свою очередь разбирает и присваивает значения в таблице своим аргументам. Ну, ясное дело не сама функция этим занимается Улыбка, но так проще выразиться.

Комментариев нет: