如何检查两个其他值之间是否包含值?

Mar*_*als 22 ruby conditional-statements

我试图表达这样的条件:

if 33.75 < degree <= 56.25
  # some code
end
Run Code Online (Sandbox Code Playgroud)

但是Ruby给出了这个错误:

undefined method `<=' for true:TrueClass
Run Code Online (Sandbox Code Playgroud)

我猜测一种方法是这样的:

if 33.75 < degree and degree <= 56.25
  # code
end
Run Code Online (Sandbox Code Playgroud)

但是没有另一种更简单的方法吗?

小智 71

Ruby之间也有?:

if value.between?(lower, higher) 
Run Code Online (Sandbox Code Playgroud)

  • 这应该是选定的答案。这正是“ Between?”的编码目的,我相信性能会更高(尽管我没有对它进行基准测试来查看) (2认同)

Aks*_*ite 9

在Ruby中有很多方法可以做同样的事情.您可以使用以下方法检查值是否在范围内,

14.between?(10,20) # true

(10..20).member?(14) # true

(10..20).include?(14) # true

但是,我建议使用betweenmember?include?.你可以在这里找到更多相关信息.


fal*_*tru 6

你可以表达a <= x <= b作为(a..b).include? xa <= x < b作为(a...b).include? x.

>> (33.75..56.25).include? 33.9
=> true
>> (33.75..56.25).include? 56.25
=> true
>>
>> (33.75..56.25).include? 56.55
=> false
Run Code Online (Sandbox Code Playgroud)

遗憾的是,似乎是没有这样的事a < x <= b,a < x < b..

UPDATE

你可以完成使用(-56.25...-33.75).include? -degree.但它很难读懂.所以我建议你使用33.75 < degree and degree <= 56.25.

  • 你批评提供封闭间隔的其他答案,但你的答案并没有太大的不同.毕竟,你不能像其他答案那样准确地提供OP想要的东西(唯一的,差别就是你提到它).自食其果. (2认同)