||运算符,结果已知时返回?

我有一个类似于以下的功能:
def check
  return 2 == 2 || 3 != 2 || 4 != 5
end
我的问题是,Ruby会执行所有比较,即使第一个是真的,因此函数返回true。我的检查要密集得多,所以我想知道我是否应该以不同的方式解决这个问题,以避免每次都进行所有检查。
irb(main):004:0> 2 == 2 || 3 != 2 || 4 != 5
=> true
谢谢。     
已邀请:
Ruby使用短路评估。 这同样适用于||和&& 使用
||
,如果左操作数是真实的,则不评估右操作数。 使用
&&
,如果左操作数是假的,则不评估右操作数。     
||
一旦第一个条件成立,就会短路。所以是的,如果你把最昂贵的条件放在最后,它会有所帮助。     
||将默认短路评估,这意味着一旦遇到第一个“真实”表达式,它将停止评估(除非您明确声明您希望所有表达式都使用'或'运算符进行评估)。 参考: http://en.wikipedia.org/wiki/Short-circuit_evaluation     
只要其中一个条件为真,该函数将返回。     
您可以在irb中自行测试,如下所示:
irb> p('Hello') || p('World')
我们知道函数
p
打印其参数(以
inspect
方式)然后返回它们,所以如果
||
短路,只打印
"Hello"
,否则打印
"Hello"
"World"
。 您还可以使用
puts
而不是
p
来测试逻辑
&&
运算符,因为
puts
始终返回
nil
。 顺便说一下,irb是玩红宝石的好地方。除了一小部分并发之外,您可以测试那里的所有内容。     

要回复问题请先登录注册