Powershell 从函数返回
如果找到匹配项,我希望从以下powershell函数返回(有关更完整的代码示例,请参阅我的): 这段代码似乎只是从if条件的作用域返回的,这不是很有用 我该怎么做?我需要在某个地方贴标签吗?不需要标签Powershell 从函数返回,powershell,return,Powershell,Return,如果找到匹配项,我希望从以下powershell函数返回(有关更完整的代码示例,请参阅我的): 这段代码似乎只是从if条件的作用域返回的,这不是很有用 我该怎么做?我需要在某个地方贴标签吗?不需要标签 function Find-Property($Filename, $PropertyName) { $shellfolder = Create-ShellFolder $fileName 0..287 | Where {$PropertyName -eq $shellfolder
function Find-Property($Filename, $PropertyName)
{
$shellfolder = Create-ShellFolder $fileName
0..287 | Where {$PropertyName -eq $shellfolder.GetDetailsOf($null, $_)} |
Foreach {$_;break}
}
另一个选项是对原始函数进行微调:
function Find-Property($fileName, $PropertyName)
{
$shellfolder = Create-ShellFolder $fileName
0..287 | Foreach-Object {
if($PropertyName -eq $shellfolder.GetDetailsOf($null, $_)) {$_; break}
}
}
如果要使用
return
语句退出函数,可以使用foreach
关键字而不是foreach对象
cmdlet。下面是一个演示:
function Foo {
foreach ($number in (0..287)) {
$number # Just show our current iteration.
if ($number -eq 50) {
return $number
}
}
}
有没有一种方法可以从一个函数中泛化出来?(我认为使用
C
样式的返回会更有效率。此外,我不认为您提供的代码有任何性能提升(事实上,Where
cmdlet可能会使其速度变慢是的,return
通常允许您更改控制流并立即退出函数)(可选返回值)。但是,管道内的返回行为不同。它退出当前脚本块。通常,我避免在管道内使用return
。@soandos在您的问题中,您没有提到任何有关性能的问题。:-)该概念起作用:PS>函数foo{0..287 |%{if($\uEq 5){$\uuu;break}}}PS>foo#输出5
function Foo {
foreach ($number in (0..287)) {
$number # Just show our current iteration.
if ($number -eq 50) {
return $number
}
}
}