这似乎很基础,但是我看不到它的行为方式或原因:
function ReturnStuff{
$a=1,2,3,4,5
$a.ForEach{
return $_
}
}
ReturnStuff
为什么会给我:1 2 3 4 5而不是1?
看起来您正在使用一个脚本块参数调用ForEach
(中的函数[System.Array]
)。本质上,您正在定义并返回{ Return $_ }
循环的每个迭代。
这意味着ReturnStuff
将每次捕获输出,并且由于此函数对该行的输出不执行任何操作,因此将返回所有输出:
$a.ForEach{ return $_ }
此行为类似于 $a | Foreach-Object { return $_ }
那么该怎么办?
请ForEach
改为使用循环(不要与混淆Foreach-Object
):
ForEach ($item In $a) { return $item }
选择从所有脚本块返回的第一个值:
$a.ForEach{ return $_ } | Select -First 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句