为什么参数名称不能以数字开头?

时间:2013-09-25 13:47:44

标签: powershell

变量名可以是数字-α,为什么参数名也不能以这种方式运行?

Switch parameter starting with a number

2 个答案:

答案 0 :(得分:4)

因为Powershell Language Specification中指定的first-parameter-char语法的command-parameter不允许这样做。

2.3.4 Parameters
Syntax:

    command-parameter:
        dash   first-parameter-char   parameter-chars   colonopt

    first-parameter-char:
        A Unicode character of classes Lu, Ll, Lt, Lm, or Lo
        _   (The underscore character U+005F)
        ?

您可以找到unicode字符类列表here

答案 1 :(得分:2)

这绝对是惯例,并不是纯粹的技术限制。

function f($1) {
    $1
}


# Works positionally
f 1


# Works with splatting
$h = @{"1" = 2}
f @H


# Doesn't work by name
f -1 2

值得注意的是,语言规范是在语言本身之后编写的,因此可能有一些点比较具体,而PowerShell本身也是如此。