Ruby中,如何用逻辑运算符实现条件判断呢?
- 内容介绍
- 文章标签
- 相关推荐
本文共计572个文字,预计阅读时间需要3分钟。
在Ruby中,`or` 和 `||` 都用于逻辑运算,但它们的使用场景和性能表现有所不同。
1. `or` 是一个方法调用,它是 `Object` 类的一个实例方法。这意味着它需要在对象上调用,并且会返回调用者(self)。在逻辑或运算中,如果第一个条件为真,`or` 会立即返回第一个条件的结果,而不检查第二个条件。
示例: ruby a=24 b=60 comp1=a + 42 a + b > 100 || comp1==60 # 返回 true,因为 a + b > 100 为真
2. `||` 是一个操作符,它在Ruby中是双目操作符。它可以直接用在表达式之间,不需要方法调用。在逻辑或运算中,如果第一个条件为真,`||` 会立即返回第一个条件的结果,而不检查第二个条件。
示例: ruby a=24 b=60 comp1=a + 42 a + b > 100 || comp1==60 # 返回 true,因为 a + b > 100 为真
总结:- `or` 是一个方法调用,返回调用者,适用于需要返回特定对象的情况。- `||` 是一个操作符,直接用于表达式之间,更简洁,性能通常更好。
参见英文答案 > Difference between “or” and || in Ruby?8个我不知道这里有什么不同.
a = 24 b = 60 comp1 = a > 42 or b == 60 comp1 # => false comp2 = (a > 42 or b == 60) comp2 # => true
有人可以解释发生了什么以及为什么返回值不同?
这是由于操作符绑定的强度,因为操作符在 a very particular order中应用.或者非常松散,它具有最低优先级. ||运算符非常强大,与此相反.请注意该表中的内容如何||在=之前,但是或之后?这有影响.
从你的例子:
comp1 = a > 42 or b == 60
这就是Ruby解释这个的方式:
(comp1 = (a > 42)) or (b == 60)
因此,整个语句返回true但comp1被赋值为false,因为它不捕获整个事物.
所以要解决这个问题,只需使用强大的绑定版本:
comp1 = a > 42 || b == 60 # => true
本文共计572个文字,预计阅读时间需要3分钟。
在Ruby中,`or` 和 `||` 都用于逻辑运算,但它们的使用场景和性能表现有所不同。
1. `or` 是一个方法调用,它是 `Object` 类的一个实例方法。这意味着它需要在对象上调用,并且会返回调用者(self)。在逻辑或运算中,如果第一个条件为真,`or` 会立即返回第一个条件的结果,而不检查第二个条件。
示例: ruby a=24 b=60 comp1=a + 42 a + b > 100 || comp1==60 # 返回 true,因为 a + b > 100 为真
2. `||` 是一个操作符,它在Ruby中是双目操作符。它可以直接用在表达式之间,不需要方法调用。在逻辑或运算中,如果第一个条件为真,`||` 会立即返回第一个条件的结果,而不检查第二个条件。
示例: ruby a=24 b=60 comp1=a + 42 a + b > 100 || comp1==60 # 返回 true,因为 a + b > 100 为真
总结:- `or` 是一个方法调用,返回调用者,适用于需要返回特定对象的情况。- `||` 是一个操作符,直接用于表达式之间,更简洁,性能通常更好。
参见英文答案 > Difference between “or” and || in Ruby?8个我不知道这里有什么不同.
a = 24 b = 60 comp1 = a > 42 or b == 60 comp1 # => false comp2 = (a > 42 or b == 60) comp2 # => true
有人可以解释发生了什么以及为什么返回值不同?
这是由于操作符绑定的强度,因为操作符在 a very particular order中应用.或者非常松散,它具有最低优先级. ||运算符非常强大,与此相反.请注意该表中的内容如何||在=之前,但是或之后?这有影响.
从你的例子:
comp1 = a > 42 or b == 60
这就是Ruby解释这个的方式:
(comp1 = (a > 42)) or (b == 60)
因此,整个语句返回true但comp1被赋值为false,因为它不捕获整个事物.
所以要解决这个问题,只需使用强大的绑定版本:
comp1 = a > 42 || b == 60 # => true

