TIL 所有函数的参数默认都是可选的。
function f([int] $x) {
if (!$x) {
echo "Why so null?"
}
}
f
等等!被遗忘的
$x
争论就变成了$null
> .\script.ps1
Why so null?
对于
$x
为强制性,其声明需要更新为[parameter(Mandatory=$true)][int] $x
,如果有一个或两个以上的参数,这似乎不是一个合理的解决方案。将此行为作为默认行为会很好,否则包含大量函数的庞大代码库看起来有点冗长并且属性过度饱和。乍一看,
Set-StrictMode
听起来像一个神奇的词,它应该默认强制所有函数的参数,但不幸的是它不会以这种方式运行。使作用域内的所有函数参数成为强制性的最佳实践是什么?
最佳答案
最佳做法是将所有强制参数标记为强制参数。
对于 PowerShell,必须明确指定所有必需参数,否则它们将被视为可选参数,此时不存在全部捕获。
您可以在 PowerShell 参数属性 here 上找到更多信息.
关于powershell - 默认情况下强制所有函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187066/