当前位置:  开发笔记 > 后端 > 正文

如何在将PowerShell数组传递给函数时展开它

如何解决《如何在将PowerShell数组传递给函数时展开它》经验,为你挑选了1个好方法。

我有两个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可以做到这一点,但我不记得如何.



1> 小智..:

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

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有