在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;?
谢谢。
答案 0 :(得分:2)
你可以写
(x+1...z).cover? y
或(我的偏好)
(x+1..z-1).cover? y
由于x
,y
和z
是数字,因此与
(x+1..z-1).include? y