工作| |和&&运营商

时间:2015-10-12 11:44:26

标签: ruby ruby-2.2

我正在做一些事情,我觉得有点混淆&&运算符功能。

当我这样做时

5 || 15
=> 5

nil || 15
=> 15

5 || nil
=> 5

但是当我用&&和操作

5 && 15
=> 15

nil && 15
=> nil

5 && nil
=> nil

有人可以帮我理解吗?

1 个答案:

答案 0 :(得分:3)

ruby​​中的布尔运算符是短路的:如果可以从左侧参数确定表达式的值,则不会评估右侧参数。

因此,一个简单的心理模型用于评估涉及&&的布尔表达式。是考虑仅涉及两个操作数的第一个表达式:首先计算左侧操作数;如果此操作数的值为nil或false,则返回操作数,并且不评估右操作数;如果左侧操作数是其他任何内容,则评估右侧操作符并返回其值。

从这个定义中可以清楚地看出,正如您所注意到的,涉及布尔运算符的表达式不会返回true或false,而只是返回true值或false值。值得注意的是,在布尔表达式仅用于其真实性或假性的上下文中,这并没有任何区别。

希望它会对你有所帮助。