是否有理由在函数定义中使用“Param( ... )”结构?
我的理解是,您应该使用它来指定脚本(和脚本 block )的参数。我在网上看到很多示例都以这种方式列出参数,而不是仅仅在函数名称后面列出参数。
示例:
function Foo([string]$Bar){
#Body of function
}
或者,
function Foo{
Param([string]$Bar)
}
最佳答案
在 V1 中,这实际上只是一个偏好。传统上,使用 param
语句更为正式,但在功能上是相同的。
您可能会在 PowerShell V2 中看到 PARAM 的更多使用,因为能够向参数添加属性,类似于 C# 中的属性。
param
(
[Parameter( Mandatory=$true,
Position=0,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[Alias("name")]
[String]
$path
)
在这里您可以指定参数属性和该属性的一堆参数。您还可以指定别名和许多其他验证要求。
Keith 也提出了一些很好的观点。您可以使用 param 语句将参数传递给匿名脚本 block ( lambda expressions ) 或 PS1 脚本。
关于PowerShell 中的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/870141/