我的注意力几乎可以忽略不计,而且由于我目前正沉浸在 La Vida Powershell 中,所以我的代码将被格式化为这样
如果在其他地方讨论过这个问题,我提前道歉,但由于我的问题是我不知道这叫什么,我的谷歌搜索努力毫无结果,这是可以理解的。
设想三个函数:
function GrowGrapes(){...} #grows grapes.
function MakeWine(){...} #uses said grapes to make wine
function DrinkWine(){...} #drinks said wine
如果第一次失败,那么您不想,也绝不能尝试第二次。如果第二个失败,或者从未运行过,那么尝试执行第三个就没有意义了。
而不是像这样一大堆讨厌的 IF 语句......
IF ([bool]GrowGrapes()) {
IF ([bool]MakeWine()) {
DrinkWine()
}
}
在某些语言中(我相信我在引用 C 时学到了这一点...)您可以执行以下操作:
IF ([bool]GrowGrapes() -AND [bool]MakeWine()) {DrinkWine()}
甚至
$rslt = ([bool]GrowGrapes() -AND [bool]MakeWine()) -AND [bool]DrinkWine()
并且相信你的条件语句的第二部分只有在第一个返回为真/成功/无论什么的情况下才会执行。
同样,您可以对两个表达式进行 OR,并相信只有当第一个表达式返回为 false 时,第二个表达式才会被执行和测试
[bool]MakeWine() -OR [bool]BuyWine() #only attempt to purchase wine if
#the attempt to make it has failed
我的问题是:这种行为叫什么?还有,powershell支持吗?
最佳答案
它被称为短路评估,Powershell 确实支持它。请参阅有关 -and
和 -or
的部分 here .
编辑 原始链接似乎已损坏(截至 2014-11-05);一个合适的选择是 about_Logical_Operators .
关于programming-languages - 这个概念的名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382499/