我使用Splatting实现了一个函数调用。
$funtioncall= @{
Param1=$Param1;
Param2=$Param2;
Param3=$Param3;
Param4=$Param4;
Param5=$Param5;
}
function @functioncall
在某种情况下,我希望只在它们不为空时才向函数调用添加两个可选参数。
所以我有$ OptionalParam1和$ OptionalParam2
我目前有以下代码启用splatting,因为它不允许空值包含在哈希表中!
if(($OptionalParam1)-and($OptionalParam2))
{
$funtioncall= @{
Param1=$Param1;
Param2=$Param2;
Param3=$Param3;
Param4=$Param4;
Param5=$Param5;
OptionalParam1=$OptionalParam1;
OptionalParam2=$OptionalParam2;
}
}
else
{
$funtioncall= @{
Param1=$Param1;
Param2=$Param2;
Param3=$Param3;
Param4=$Param4;
Param5=$Param5;
}
}
function @functioncall
使用Splatting是否有更简单的方法可以做到这一点?
这没有splatting会更容易实现,函数调用将如下所示(因为我可以在函数中定义参数以允许null)
function -Param1 $Param1 -Param2 $Param2 -Param3 $Param3 -Param4 $Param4 -Param5 $Param5 -OptionalParam1 $OptionalParam1 -OptionalParam2 $OptionalParam2
答案 0 :(得分:2)
你不应该改变任何东西。 $null
仍然是一个值,因此没有理由以不同方式处理变量$funtioncall
的构建
$param1 = "Awesome"
$OptionalParam1 = $null
$funtioncall= @{
Param1=$Param1;
OptionalParam1=$OptionalParam1;
}
现在哈希表包含OptionalParam1
Name Value
---- -----
OptionalParam1
Param1 Awesome
因此,只要您的函数可以处理param为null的可能性,就没有问题。我做了一个显示这些值的小函数。
This @funtioncall
Param1 is 'Awesome'
OptionalParam1 is ''