【问题标题】:Function parameters in PowerShellPowerShell 中的函数参数
【发布时间】:2010-10-26 14:08:47
【问题描述】:

是否有任何理由在函数定义中使用“Param( ... )”构造?

我的理解是您应该使用它来指定脚本(和脚本块)的参数。我在网上看到很多例子都是这样列出参数的,而不是只在函数名后面列出参数。

例子:

function Foo([string]$Bar){
   #Body of function
}

或者,

function Foo{
     Param([string]$Bar)

}

【问题讨论】:

  • 也许有人有更好的答案,但我的投票是“这完全是个人喜好问题”。
  • 发现这表明你是对的:vistax64.com/powershell/…
  • 编辑问题以包含脚本块。

标签: function powershell parameters


【解决方案1】:

在 V1 中,这实际上只是一种偏好。使用param 语句在传统上更为正式,但在功能上是一样的。

您可能会在 PowerShell V2 中看到更多地使用 PARAM,因为它能够向参数添加属性,类似于 C# 中的属性。

param
(
[Parameter( Mandatory=$true,
            Position=0,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName = $true)]
[Alias("name")]
[String]
$path
)

在这里您可以指定参数属性和该属性的一堆参数。您还可以指定别名和许多其他验证要求。

Keith 也提出了一些重要的观点。您可以使用 param 语句将参数传递给匿名脚本块 (lambda expressions) 或 PS1 脚本。

【讨论】:

    【解决方案2】:

    param() 需要为脚本文件和脚本块指定参数:

    PS> $sb = {param($x,$y) $x + $y}
    PS> &$sb 1 3
    4
    

    它也可用于传统功能只是 IMO 的一致性问题。对于每个参数往往有很多包袱,呃元数据的高级函数来说,它更好。

    【讨论】:

      【解决方案3】:

      可能作为一致性度量?始终以相同的方式指定参数可以提高可读性。

      【讨论】:

        【解决方案4】:

        Param 是一个函数,用于提取传递给程序的表单变量的值(可以是 Perl 或任何可能使用 CGI 的脚本语言)。

        例如,在XHTML 表单中,当您使用输入元素(标签)并将类型指定为“文本”时,您还将使用名为“名称”的参数。 name 有一个值,比如 num,这个值应该是 param 函数的参数,以便它可以提取用户在表单文本框中输入的值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          • 2015-01-12
          • 2013-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-05
          相关资源
          最近更新 更多