字符串中的一元增量运算符不起作用

ekk*_*kis 2 powershell

假设我们设置一个变量,$ i = 0,然后

"-$i-" => "-0-"
"-$($i)-" => "-0-"
Run Code Online (Sandbox Code Playgroud)

以上是我所期望的,但这失败了:

"-$(++$i)-" => "--"  # I expected "-1-"
Run Code Online (Sandbox Code Playgroud)

然而,表达确实有效.例如:

"-$(pwd)-" => "-C:\temp-"
Run Code Online (Sandbox Code Playgroud)

那么这里发生了什么?

Eri*_*ris 6

根据文档,这是预期的行为

增量运算符(++)将变量的值增加1.在简单语句中使用增量运算符时,不返回任何值.要查看结果,请显示变量的值,如下所示:

    C:\PS> $a = 7
    C:\PS> ++$a
    C:\PS> $a
    8
Run Code Online (Sandbox Code Playgroud)

要强制返回值,请将变量和运算符括在括号中,如下所示:

    C:\PS> $a = 7
    C:\PS> (++$a)
    8
Run Code Online (Sandbox Code Playgroud)

最简单的方法是以下声明:

"-$((++$i))-" #=> -4-
Run Code Online (Sandbox Code Playgroud)

由于额外的括号集告诉它返回值,而不是只执行语句.