这个概念的名称是什么?

The*_*uit 2 powershell programming-languages coding-style

我的注意力可以忽略不计,而且由于我现在沉浸在La Vida Powershell中,我的代码将被格式化为

如果在其他地方已经讨论过,我会事先道歉,但由于我的问题是我不知道这是什么,我的谷歌搜索努力已经毫无结果.

想象三个功能:

function GrowGrapes(){...} #grows grapes.
function MakeWine(){...} #uses said grapes to make wine
function DrinkWine(){...} #drinks said wine
Run Code Online (Sandbox Code Playgroud)

如果第一次失败,那么你不想,也绝不能尝试第二次.如果第二次失败,或者从未跑过,那么就没有必要尝试执行第三次.

而不是像这样的一个令人讨厌的IF语句嵌套......

IF ([bool]GrowGrapes()) {
   IF ([bool]MakeWine()) {
      DrinkWine()
   }
}
Run Code Online (Sandbox Code Playgroud)

在某些语言中(我相信我在参考C ...时学到了这一点)你可以做到以下几点:

IF ([bool]GrowGrapes() -AND [bool]MakeWine()) {DrinkWine()}
Run Code Online (Sandbox Code Playgroud)

甚至

$rslt = ([bool]GrowGrapes() -AND [bool]MakeWine()) -AND [bool]DrinkWine()
Run Code Online (Sandbox Code Playgroud)

并且相信如果第一次回归真实/成功/无论如何,你的条件的下半部分将只会执行.

同样你可以使用两个表达式,并且相信第二个只会在第一个回复为假时执行和测试

[bool]MakeWine() -OR [bool]BuyWine()      #only attempt to purchase wine if 
                                          #the attempt to make it has failed
Run Code Online (Sandbox Code Playgroud)

我的问题是:这个行为叫什么?另外,powershell支持吗?

Gab*_*art 12

它被称为短路评估,Powershell确实支持它.请参阅此处-and-or 此处的部分.

编辑原始链接似乎被破坏(截至2014-11-05); 一个合适的替代方案是about_Logical_Operators.