变量名可以是数字-α,为什么参数名也不能以这种方式运行?
答案 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本身也是如此。