Joe*_*oey 4 parameters powershell
我在PowerShell中有一个高级函数,大致如下所示:
function Foo {
[CmdletBinding]
param (
[int] $a = 42,
[int] $b
)
}
Run Code Online (Sandbox Code Playgroud)
这个想法是它可以用两个,一个或没有参数运行.但是,成为可选的第一个参数是第一个.因此,以下方案可以运行该功能:
Foo a b # the normal case, both a and b are defined
Foo b # a is omitted
Foo # both a and b are omitted
Run Code Online (Sandbox Code Playgroud)
但是,通常PowerShell会尝试将单个参数放入a中.所以我考虑明确指定参数位置,其中a将位置0和b位置1.但是,为了仅允许b指定我尝试将a放入参数集.但是根据当前使用的参数集,b将需要不同的位置.
任何想法如何妥善解决?我想保留参数名称(实际上不是a和b),因此使用$args可能是最后的手段.我可能可以定义两个参数集,一个带有两个必需参数,另一个带有一个可选参数,但我猜参数名称在这种情况下必须不同,那么,对吧?
关于如何正确解决这个问题的想法?不,我已经争论过一个类似的功能,如果位置0的参数是管道绑定,任何其他参数的"位置"向下滑动,这样你就可以继续提供位置参数,而不必诉诸于所有命名参数.该团队认为这对于人们来说太混乱了 - 有参数转移位置.此行为是将管道绑定参数放在位置参数末尾的一个很好的理由.:-)
BTW具有高级功能,$ args不是一个选项.有点像$ _ - 它不适用.ValueFromRemainingArguments改为使用,例如:
[Parameter(ValueFromRemainingArguments=$true)]
$rest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4367 次 |
| 最近记录: |