我有一个方法可以返回1到100之间的数字
取决于响应(x)是否介于 100 - 90我想要一个回复,89 - 85另一个84 - 72另一个......等等。
我用
if x > 90
response a
elsif x > 85
response b
elsif etc...
但这看起来有点混乱,有没有更好的重构方法呢?
非常感谢。
答案 0 :(得分:6)
利用Range#===
并使用case
声明:
case x
when 72..84
# Do something
when 85..89
# Do something
when 90..100
# Do something
else
# Do something when no matches
end
答案 1 :(得分:3)
您可以尝试一个表(Hash
),其中键是范围,值是您要返回的数字:
T = {
(90..100) => 1,
(85..89) => 2,
# and so on
}
(r,v) = T.find {|r,v| r.member? x}
if v then
return v
else
# x wasn't in any of the defined ranges
end