Почему имена параметров не могут начинаться с цифры?
Имена переменных могут быть числовыми-альфа, почему имена параметров не могут вести себя так же?
2 ответа
Решение
Поскольку first-parameter-char
из command-parameter
синтаксис, указанный в спецификации языка Powershell, не допускает этого.
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 здесь.
Это определенно соглашение, а не чисто техническое ограничение.
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.