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


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中比较三个整数值而不使用&&? 谢谢.

最佳答案 你可以写

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

或(我的偏好)

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

因为x,y和z是数字,所以它是相同的

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

Range#cover?Range#include?.

点赞