逻辑运算符的返回值 -- Ruby

name = Foo || "Bar"

逻辑运算符在编程中再常见不过, 但是上面这段ruby代码是给name判断真伪呢?还是给name赋值呢?

基本概念

A || B: A B之中只要有一个是真, 表达式则为真。
A && B: A B都为真, 表达式才为真。

我经常会用逻辑运算符来简化条件判断

//php代码
if (A) {
    if (B) {
        echo "foo";
    }
}

//使用逻辑运算符

if (A && B) {
   echo "foo"; 
}

返回值

要知道开头那段代码的答案, 就要先了解逻辑运算符的返回值

在php中, 逻辑运算符返回的是boolean

>>> "123" || "abc"
=> true

但是在ruby中, 当判断为真时, 逻辑运算符返回的则是表达式的值

2.3.0 :001 > "123" || "abc"
 => "123"

对于||来说, ruby会按照从左到右的顺序, 返回第一个为真的表达式的值

其实在js, 和python中, 与ruby一样也是返回表达式的值

//js
"123" || "abc"
> "123"
//python
>>> "123" || "abc"
'123'

运用逻辑运算符赋值

name = Foo || "Bar"
name = "Bar"
name = Foo if Foo

上面的这段代码就是给name赋值, 上面的两段代码是等价的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容