我想检查my_number是否在某个范围内,包括更高的值。
在IF声明中,我只使用“x> 100& x< = 500”
但是我应该在Ruby案例(交换机)中做什么?
case my_number
when my_number <= 500
puts "correct"
end
不起作用。
标准范围不包括如果my_number正好是500的情况,并且我不想添加第二个“when”,因为我必须写双内容
case my_number
# between 100 and 500
when 100..500
puts "Correct, do something"
when 500
puts "Correct, do something again"
end
答案 0 :(得分: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,您是否要执行单独的操作?
答案 1 :(得分:3)
when -Float::INFINITY..0
会做的伎俩:)
答案 2 :(得分:1)
你可以这样做:
(1..500).include? x
也被别名为member?
。
答案 3 :(得分:0)
这里是一种case
捕获方式,可以根据需要捕获"x > 100 && x <= 500
:一个封闭范围内的值,其中不包括起始值,而包含了结束值。另外,显示了捕获前后的范围。
case my_number
when ..100; puts '≤100'
when 100..500; puts '>100 and ≤500'
when 500..; puts '>500'
end
说明:
-Infinity
开始的一端遗漏了。转到Infinity
。这是introduced in Ruby 2.6。x..y
包含结束值,范围x...y
包含结束值。when
情况下捕获起始值。即使when
,第二种"x > 100 && x <= 500
情况也等同于您的(100..500).include? 100
。对于第三种情况也是如此。