我有两个PowerShell函数,第一个调用第二个函数.它们都带有N个参数,其中一个被定义为简单地添加一个标志并调用另一个.以下是示例定义:
function inner { foreach( $arg in $args ) { # do some stuff } } function outer { inner --flag $args }
用法看起来像这样:
inner foo bar baz
或这个
outer wibble wobble wubble
目标是后一个例子等同于
inner --flag wibble wobble wubble
问题:inner
如此处所定义,后者实际上导致传递两个参数:第一个是"--flag",第二个是包含"wibble","wobble"和"wubble"的数组.我想要的是inner
接收四个参数:标志和三个原始参数.
所以我想知道的是如何说服powershell在传递它之前扩展$ args数组inner
,将其作为N个元素而不是单个数组传递.我相信你可以使用splatting运算符(*字符)在Ruby中执行此操作,我很确定PowerShell可以做到这一点,但我不记得如何.
PowerSHell V1中没有很好的解决方案.在V2中我们添加了splatting(虽然出于各种原因,我们使用@而不是*来实现此目的).这是它的样子:
PS(STA-ISS)(2)> function foo($ x,$ y,$ z){"x:$ xy:$ yz:$ z"}
PS(STA-ISS)(3)> $ a = 1,2,3
PS(STA-ISS)(4)> foo $ a#作为单个arg传递
x:1 2 3 y:z:
PS(STA-ISS)(5)> foo @a #splatted
x:1 y:2 z:3