致力于 | |和 && 运算符
Working on | | and && operators
我正在做一些事情,我发现有点混淆 &&
运算符功能。
当我做
5 || 15
=> 5
nil || 15
=> 15
5 || nil
=> 5
但是当我使用 && 运算符时。
5 && 15
=> 15
nil && 15
=> nil
5 && nil
=> nil
谁能帮我理解一下?
ruby 中的布尔运算符是短路的:如果可以从左侧参数确定表达式的值,则不会计算右侧参数。
因此,评估涉及 && 的布尔表达式的更简单的心理模型是考虑第一个仅涉及两个操作数的表达式:首先评估左侧操作数;如果此操作数的值为 nil 或 false,则操作数为 returned 并且不评估右侧操作数;如果左边的操作数是其他任何东西,右边的运算符被评估并且它的值是 returned.
根据这个定义,很明显,正如您所注意到的,涉及布尔运算符的表达式不会 return 真或假,而只是真值或假值。值得注意的是,这在布尔表达式仅用于其真值或假值的上下文中没有任何区别。
希望对您有所帮助。
我正在做一些事情,我发现有点混淆 &&
运算符功能。
当我做
5 || 15
=> 5
nil || 15
=> 15
5 || nil
=> 5
但是当我使用 && 运算符时。
5 && 15
=> 15
nil && 15
=> nil
5 && nil
=> nil
谁能帮我理解一下?
ruby 中的布尔运算符是短路的:如果可以从左侧参数确定表达式的值,则不会计算右侧参数。
因此,评估涉及 && 的布尔表达式的更简单的心理模型是考虑第一个仅涉及两个操作数的表达式:首先评估左侧操作数;如果此操作数的值为 nil 或 false,则操作数为 returned 并且不评估右侧操作数;如果左边的操作数是其他任何东西,右边的运算符被评估并且它的值是 returned.
根据这个定义,很明显,正如您所注意到的,涉及布尔运算符的表达式不会 return 真或假,而只是真值或假值。值得注意的是,这在布尔表达式仅用于其真值或假值的上下文中没有任何区别。
希望对您有所帮助。