about_Return
简短说明
退出当前作用域,它可以是函数、脚本或脚本块。
长说明
return
关键字用于退出函数、脚本或脚本块。 它可用于在特定点退出作用域、返回值或指示已到达作用域的末尾。
熟悉 C 或 C# 之类的语言的用户可能希望使用 return
关键字来明确离开某个作用域的逻辑。
在 PowerShell 中,每个语句的结果都会作为输出返回,即使不使用包含 Return 关键字的语句。 C 或 C# 之类的语言仅返回由 return
关键字指定的一个或多个值。
注意
从 PowerShell 5.0 开始,PowerShell 通过使用形式语法添加了用于定义类的语言。 在 PowerShell 类的上下文中,除了使用 return
语句指定的内容之外,方法不会输出任何内容。 你可以在 about_Classes 中了解有关 PowerShell 类的更多信息。
语法
return
关键字的语法如下:
return [<expression>]
return
关键字可以单独出现,也可以后跟一个值或表达式,如下所示:
return
return $a
return (2 + $a)
示例
以下示例使用 return
关键字在满足条件时在特定点退出函数。 奇数不会相乘,因为 return 语句在该语句执行之前就已退出。
function MultiplyEven
{
param($number)
if ($number % 2) { return "$number is not even" }
$number * 2
}
1..10 | ForEach-Object {MultiplyEven -Number $_}
1 is not even
4
3 is not even
8
5 is not even
12
7 is not even
16
9 is not even
20
在 PowerShell 中,即使不使用 return
关键字,也可以返回值。
每个语句的结果都会返回。 例如,以下语句返回 $a
变量的值:
$a
return
以下语句还返回 $a
的值:
return $a
以下示例包含一个旨在让用户知道该函数正在执行计算的语句:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
不显示“请稍候。 正在进行计算...”字符串。 而是将它分配给 $a
变量,如下例所示:
PS> $a
Please wait. Working on calculation...
87
函数会返回信息字符串和计算结果并将其分配给 $a
变量。
从 PowerShell 5.0 开始,如果想在函数中显示消息,可以使用 Information
流。 下面的代码使用 InformationAction
为 Continue 的 Write-Information
cmdlet 更正了上述示例。
function calculation {
param ($value)
Write-Information "Please wait. Working on calculation..." -InformationAction Continue
$value += 73
return $value
}
$a = calculation 14
Please wait. Working on calculation...
C:\PS> $a
87
返回值和管道
从脚本块或函数返回集合时,PowerShell 会自动展开成员并通过管道将它们一次传递一个。 这是因为 PowerShell 存在一次一个的处理机制。 有关详细信息,请参阅 about_pipelines。
以下返回数字数组的示例函数说明了这一概念。 该函数的输出通过管道传输到 Measure-Object
cmdlet,后者计算管道中的对象数量。
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
若要强制脚本块或函数将集合作为单个对象返回到管道,请使用以下两种方法之一:
一元数组表达式
使用一元表达式,可以将返回值作为单个对象沿着管道发送,如下例所示。
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Write-Output
,带有 NoEnumerate 参数。还可以使用带有 NoEnumerate 参数的
Write-Output
cmdlet。 以下示例使用Measure-Object
cmdlet 对通过return
关键字从示例函数发送到管道的对象进行计数。function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈