从函数的Powershell循环中早返回

时间:2019-05-23 01:24:46

标签: powershell syntax

我正在尝试制作一个简单的“ coalesce”功能,但在Powershell返回语法方面苦苦挣扎

尝试:

function coalesce {
   foreach($item in $args) {
     if ($item) {
       return $item
       break # also tried continue and exit
     }
   }
 }
coalesce($nil,2,3)
2
3
function coalesce {
   ForEach-Object -InputObject $args { If($_) { return $_; exit } } # also tried continue and break
}
coalesce($nil,2,3)

2
3

那么我如何在循环中模拟return并以其他任何编程语言退出函数?

1 个答案:

答案 0 :(得分:1)

在powershell中,如果调用带有用逗号分隔的项目包裹的括号的函数,则会得到一个对象。 [ grin ]您的函数正在运行,并返回三个对象的数组。因此,使用三个输入来调用该函数的正确方法是...

coalesce $Null 2 3

还请注意,$nil不是$Null ...它是一个名为nil的新变量,其中没有任何内容-换句话说,值为$Null在里面。