Powershell 如何定义函数的返回类型/输出类型
为什么以下类型正在更改Powershell 如何定义函数的返回类型/输出类型,powershell,Powershell,为什么以下类型正在更改 function SomeFunction($SomeParameter){ return $SomeParameter } 我想我需要设置一个返回类型,但是如何设置 一个例子是使用: $NewFolder=Join-Path $CurrentFolder -ChildPath $FolderName $Tmp=SomeFunction($NewFolder) 现在$Tmp是一个数组,而不仅仅是一个路径,您的问题在于每个设计。PowerShell将返回一个分块
function SomeFunction($SomeParameter){
return $SomeParameter
}
我想我需要设置一个返回类型,但是如何设置
一个例子是使用:
$NewFolder=Join-Path $CurrentFolder -ChildPath $FolderName
$Tmp=SomeFunction($NewFolder)
现在$Tmp是一个数组,而不仅仅是一个路径,您的问题在于每个设计。PowerShell将返回一个分块的数组,以便将其转发到PowerShell管道 例如:
SomeFunction -SomeParameter @(1,2,3,4) | Where-Object { $_ -gt 2 }
如果没有此行为,则无法将函数的输出管道化到另一个函数/cmdlet
如果要返回数组,可以将代码更改为:
function SomeFunction($SomeParameter){
<#
# Through the unary operator we can return an array with one entry.
# This entry contains the original array.
#>
,$SomeParameter
}
还有一个更详细的解释行为
希望有帮助。您的问题是每种设计。PowerShell将返回一个分块的数组,以便将其转发到PowerShell管道 例如:
SomeFunction -SomeParameter @(1,2,3,4) | Where-Object { $_ -gt 2 }
如果没有此行为,则无法将函数的输出管道化到另一个函数/cmdlet
如果要返回数组,可以将代码更改为:
function SomeFunction($SomeParameter){
<#
# Through the unary operator we can return an array with one entry.
# This entry contains the original array.
#>
,$SomeParameter
}
还有一个更详细的解释行为
希望这会有所帮助。当您看到时,我将尝试回答实际问题:如何声明函数的预期输出类型
您可以通过向函数的param块添加[OutputType]属性来实现这一点,因此您要做的第一件事是跳过C样式的param列表,而是声明一个正确的param块:
function SomeFunction
{
param($SomeParameter)
return $SomeParameter
}
现在我们只需要添加[OutputType]属性装饰器:
function SomeFunction
{
[OutputType([string])]
param($SomeParameter)
return $SomeParameter
}
因为我们只是像本例中那样返回参数值,所以我们应该很好地处理,并确保它实际上也是一个字符串:
function SomeFunction
{
[OutputType([string])]
param(
[string]$SomeParameter
)
return $SomeParameter
}
值得注意的是,[OutputType]对执行期间发出的对象的类型没有任何保证,它只是函数作者指示预期输出类型的一种方式
阅读中有关[OutputType]的更多信息,在这里我将尝试回答实际问题:如何声明函数的预期输出类型
您可以通过向函数的param块添加[OutputType]属性来实现这一点,因此您要做的第一件事是跳过C样式的param列表,而是声明一个正确的param块:
function SomeFunction
{
param($SomeParameter)
return $SomeParameter
}
现在我们只需要添加[OutputType]属性装饰器:
function SomeFunction
{
[OutputType([string])]
param($SomeParameter)
return $SomeParameter
}
因为我们只是像本例中那样返回参数值,所以我们应该很好地处理,并确保它实际上也是一个字符串:
function SomeFunction
{
[OutputType([string])]
param(
[string]$SomeParameter
)
return $SomeParameter
}
值得注意的是,[OutputType]对执行期间发出的对象的类型没有任何保证,它只是函数作者指示预期输出类型的一种方式
在中阅读有关[OutputType]的更多信息