2013-04-17 17 views
5

我想检查my_number是否在某个范围内,包括较高的值。Ruby范围:操作员在case语句中

在if语句我会简单地用 “X> 100 & & X < = 500”

但我应该在Ruby情况下做(开关)?

使用:

case my_number 
when my_number <= 500 
    puts "correct" 
end 

不起作用。

注:

如果my_number正好是500,我不希望添加标准范围不包括的情况下第二“的时候”,因为我会写双内容

case my_number 
# between 100 and 500 
when 100..500 
    puts "Correct, do something" 
when 500 
    puts "Correct, do something again" 
end 
+0

你是错的伎俩。 '100..500'确实匹配'500'。 – sawa

+0

sawa是对的。谢谢你们的帮助! –

回答

6

它应该就像你说的那样工作。下面case结构包括价值500

case my_number 
# between 100 and 500 
when 100..500 
    puts "Correct, do something" 
end 

所以:

case 500 
    when 100..500 
    puts "Yep" 
end 

将返回Yep

或者您想进行单独行动,如果该值正是 500?

+0

它确实回答我的问题,你是绝对正确的,仍然是一个noob我想:) –

+0

不用担心,很高兴我可以确认你自己的答案;) –

+4

只是为了完整性:'1..500'包括500,而'1 ... 500'不包括500. 使用'..'构造的范围从头到尾包含在内。那些使用'...'创建的结果值排除 –

1

你可能只是做:

(1..500).include? x 

这也是别名为member?

3
when -Float::INFINITY..0 

会做:)