Ben*_*wer 5 powershell foreach loops
这看起来很基本,但我看不出它是如何或为什么这样表现的:
function ReturnStuff{
$a=1,2,3,4,5
$a.ForEach{
return $_
}
}
ReturnStuff
Run Code Online (Sandbox Code Playgroud)
为什么这会给我:1 2 3 4 5而不是1?
看起来你正在使用一个参数作为一个scriptblock 调用ForEach
(函数[System.Array]
).基本上,您正在定义并返回{ Return $_ }
循环的每次迭代.
这意味着ReturnStuff
每次都会捕获输出,并且由于此函数对此行的输出不执行任何操作,因此返回所有输出:
$a.ForEach{ return $_ }
Run Code Online (Sandbox Code Playgroud)
这种行为类似于 $a | Foreach-Object { return $_ }
那么该怎么办?
ForEach
改为使用循环(不要混淆Foreach-Object
):
ForEach ($item In $a) { return $item }
Run Code Online (Sandbox Code Playgroud)选择从所有脚本块返回的第一个值:
$a.ForEach{ return $_ } | Select -First 1
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
5640 次 |
最近记录: |