Я считаю, что это было дизайнерское решение, принятое командой PowerShell, чтобы избежать неожиданностей из-за вывода возвращаемых значений PowerShell.Многие C / C # люди ожидают, что следующая функция будет выводить только 1, а не @ (0,1).
function foo {
$i = 0
$i++
$i
}
Таким образом, форма оператора $i++
не выводит значение $ i, прежде чем оно будетувеличивается.Если вам нужно такое поведение, PowerShell позволяет вам получить такое поведение, поместив оператор приращения (или уменьшения) непосредственно в выражение, например:
function foo {
$i = 0
($i++)
$i
}
Это выведет @ (0,1).
Брюс Пайетт обсуждает это в главе 5 Windows PowerShell в действии, 2-е издание .Операторы увеличения и уменьшения являются «допустимыми утверждениями».Цитата из книги:
По сути, это означает, что определенные типы выражений, когда они используются в качестве операторов, не отображаются.Допустимые операторы включают операторы присваивания и операторы увеличения / уменьшения.Когда приращение и уменьшение используются в выражении, они возвращают значение, но когда они используются как автономный оператор, они не возвращают значение.