如何在Windows PowerShell 4.0中执行短路评估?

Cod*_*ick 8 c# vb.net powershell short-circuiting

Technet 关于Windows PowerShell 4.0的about_Logical_Operators声明如下:

Operator     Description                        Example

--------     ------------------------------     ------------------------
-or          Logical or. TRUE when either       (1 -eq 1) -or (1 -eq 2) 
             or both statements are TRUE.       True

-xor         Logical exclusive or. TRUE         (1 -eq 1) -xor (2 -eq 2)
             only when one of the statements    False 
             is TRUE and the other is FALSE.
Run Code Online (Sandbox Code Playgroud)

似乎都没有进行短路评估.

如何在Windows Powershell 4.0中模仿C# ||或VB ?OrElse

Kei*_*ill 17

一组简单的测试用例表明短路工作:

PS C:\> 1 -eq 0 -or $(Write-Host 'foo')
foo
False
PS C:\> 1 -eq 1 -or $(Write-Host 'foo')
True

PS C:\> 1 -eq 1 -and $(Write-Host 'foo')
foo
False
PS C:\> 1 -eq 0 -and $(Write-Host 'foo')
False
Run Code Online (Sandbox Code Playgroud)

  • 很有意思。我想知道 `-or` 是否默认这样做,但文档另有说明。但是现在,在重新阅读描述后,它确实说“当其中之一或两者时”,所以我想这意味着它默认情况下会进行某种形式的短路。 (2认同)
  • 是的,默认情况下它对 -and & -or 运算符进行短路。 (2认同)