Python vs Ruby:y大于x且小于z吗?

时间:2016-10-03 15:40:58

标签: ruby

在Ruby中比较三个整数值是否有一种不那么冗长的方法?

例如,在Python中,以下内容返回True:

x = 2
y = 3
z = 4
x < y < z

在Ruby中使用相同的变量绑定,以下内容都将返回true:

x < y && y < z
x.send(:<, y) && y.send(:<, z)

但是这个:

x < y < z

返回NoMethodError:

NoMethodError: undefined method `<' for true:TrueClass

我认为这是因为x < y的第一次比较评估为true,而错误是从结果TrueClass.instance < z中提出的?有没有办法在Ruby中比较三个整数值而不使用&amp;&amp;?

谢谢。

1 个答案:

答案 0 :(得分:2)

你可以写

(x+1...z).cover? y

或(我的偏好)

(x+1..z-1).cover? y

由于xyz是数字,因此与

相同
(x+1..z-1).include? y

请参阅Range#cover?Range#include?