如果`在PowerShell中工作,为什么不返回?

时间:2015-04-10 14:15:07

标签: powershell

使用return后跟一个简单的表达式相当自然。这在一定程度上适用于PowerShell:

    return 1+1;                     # evaluates the expression and returns 2

    function Increment-Variable([int] $a) 
    { 
        return $a + 1 
    }

    return Increment-Variable 23;   #Expression evaluated: returns 24

但由于某些原因,我的PowerShell(v4)拒绝以下内容。

    return if ($True) { 2 } else { 3 } #Error: Expression not parsed/evaluated

    The term 'if' is not recognized as the name of a cmdlet, function,
    script file, or operable program.

用括号括起来并没有帮助。

1 个答案:

答案 0 :(得分:2)

将语句包含在子表达式中,解析器不会抱怨:

return $(if ($True) { 2 } else { 3 })

about_Operators帮助页面中记录了这一点:

Get-Help about_Operators

您可以在about_Operator_Precedence页面找到有关操作符和括号优先级的信息:

Get-Help about_Operator_Precedence