TIL默认情况下所有函数的参数都是可选的。
function f([int] $x) {
if (!$x) {
echo "Why so null?"
}
}
f
Etvoilà!被遗忘的$x
论证刚刚成为$null
> .\script.ps1
Why so null?
要使$x
成为强制性要求,其声明需要更新为[parameter(Mandatory=$true)][int] $x
,如果有超过一个或两个参数,这似乎不是一个理智的解决方案。将此行为作为默认行为会很好,因为否则包含大量函数的巨大代码库看起来有点冗长且过度饱和属性。
乍一看,Set-StrictMode
听起来像一个神奇的词,默认情况下应该强制所有函数的参数,但不幸的是它不会这样做。
使范围内的所有函数参数都是强制性的最佳实践是什么?
答案 0 :(得分:1)
最佳做法是将所有强制性参数标记为强制性。
使用PowerShell必须明确指定所有必需参数,否则它们将被视为可选参数,此时不存在全部捕获。
您可以在PowerShell参数属性here上找到更多信息。