Creo que esta fue una decisión de diseño realizada por el equipo de PowerShell para evitar sorpresas debido a los valores de retorno de salida de PowerShell. Muchos usuarios de C/C# esperarían que la siguiente función solo produzca 1 no @ (0,1).
function foo {
$i = 0
$i++
$i
}
lo tanto, el formulario de declaración $i++
no da salida al valor de $ i antes de que se incrementa. Si quieres que el comportamiento, PowerShell le permite obtener que el comportamiento poniendo la declaración de incremento (o decremento) directamente dentro de una expresión ej .:
function foo {
$i = 0
($i++)
$i
}
Este @ es la salida (0,1).
Bruce Payette analiza esto en el Capítulo 5 de Windows PowerShell in Action 2nd Edition. Los operadores de incremento y decremento son "declaraciones anulables". Citando del libro:
Básicamente, esto significa que ciertos tipos de expresiones, cuando se usan como declaraciones , no se muestran. Las instrucciones de Voidable incluyen instrucciones de asignación y operadores de incremento/decremento. Cuando el incremento y el decremento se usan en una expresión, devuelven un valor, pero cuando se usan como una declaración independiente, no devuelven ningún valor.
¡Oh chico, tienes a la comunidad yendo en este! :-) –