我想检查my_number是否在一定范围内,包括较高的Value。
在IF语句中,我只是使用“ x> 100 && x <= 500”
但是在Ruby情况下(交换机)我应该怎么做?
case my_number
when my_number <= 500
puts "correct"
end
不起作用。
如果My_number恰好是500,并且我不想添加第二个“时间”,则标准范围不包括这种情况,因为我必须写两倍的Content内容
case my_number
# between 100 and 500
when 100..500
puts "Correct, do something"
when 500
puts "Correct, do something again"
end
它应该像您说的那样工作。下面的case
构造includes值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
或者如果值是exactly 500,您是否想执行单独的操作?
when -Float::INFINITY..0
会做把戏:)
您可以做:
(1..500).include? x
也别名为member?
。
这里是根据需要捕获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
。对于第三种情况类似。