【发布时间】:2014-08-15 12:52:46
【问题描述】:
我有一个函数如下:
function T
{
Param
(
[switch] $IsValueNameRegularExpression
)
..
}
通常要确定一个参数是否存在,你会做if ($Param),只看到这是一个[switch],如果函数被称为T -IsValueNameRegularExpression:$false,将在if ($IsValueNameRegularExpression)上返回false,即使参数存在-即,调用者为可选参数指定了一个值。
如果我将参数类型从[switch] 更改为[bool],显然会发生同样的事情。
在我的函数代码中,我调用了一些 .NET 方法,其中包含我的 [bool]`[switch]` 参数的默认设置,所以除非用户指定了一个值(无论是真还是假),否则我不会不想将它传递给 .NET 方法。
我可以为参数分配默认值以匹配 .NET 方法的默认值,但这是假设 .NET 方法的默认值永远不会改变,这可能不是真的 ...
那么,有没有更优雅的方法呢?
【问题讨论】:
标签: powershell