【发布时间】:2022-11-19 04:04:45
【问题描述】:
我目前正在研究我的 PowerShell 模块的高级功能,并且要解决一个我认为在课堂上没有适当涉及的问题。
这里说的问题。
使用 Begin、Process 和 End 创建一个带有两 (2) 个参数的高级函数。第一个参数是至少十 (10) 个整数的数组,第二个参数是单个整数。在数组参数中搜索单个整数参数的每次出现,然后返回数组中所有元素的总和,不包括单个整数参数的每次出现。
我无法弄清楚“至少十(10)个整数”部分。
这是我写的脚本。
function get-multisum { [CmdletBinding()] Param ( [Parameter(Mandatory=$true)] [ValidateLength(10)] [array]$array, [Parameter(Mandatory=$true)] [int32]$num ) Begin { $total = 0 } Process { foreach($i in $array) { if($i -ne $num) { $total = $total + $i } else { continue } } } End { return $total } }虽然我知道这可以写成...
function problem($array, $num) { foreach($i in $array) { if($i -ne $num) { $total = $total + $i } } return $total }该问题专门提示了一个高级功能。除了验证至少包含 10 个元素的数组之外,我的脚本按预期工作。我尝试了 [ValidateLength(10)] 但没有用。我不想在代码以一些 if 语句或你有什么开始之后运行检查。我很好奇是否一开始就只允许有效参数。提前致谢!
【问题讨论】:
-
ValidateLength对于字符串类型的参数非常有用。不幸的是不适用于数组
标签: arrays powershell parameters