考虑这样的功能:
$missed = "{716C1AD7-0DA6-45e6-854E-4B466508EB96}"
function Test($foo = $missed, $bar = $missed)
{
if(!$foo)
{
throw "error"
}
if(!$bar)
{
throw "error"
}
}
我想这样调用这个函数
Test -foo $foo -bar $bar
但是,如果$ foo或$ bar为$ null,则会引发异常。天真的解决方案是
if($foo -and $bar)
{
Test -foo $foo -bar $bar
}
elseif ($foo)
{
Test -foo $foo
}
elseif ($bar)
{
Test -bar $bar
}
else
{
Test
}
我如何用一两行重写if / else块?
最佳答案
由于您无法控制“测试”功能,因此可以执行以下操作:
$params = @()
if ($foo) {
$params += "-Foo","`$foo"
}
if ($bar) {
$params += "-Bar","`$bar"
}
Invoke-Expression "Test $params"
关于function - 如何省略调用函数的$ null参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728022/