我有一个方法可以返回 1 - 100 之间的数字
取决于响应 (x) 是否在 100 - 90 之间,我想要一个响应,89 - 85 另一个 84 - 72 另一个......等等
我用
if x > 90
response a
elsif x > 85
response b
elsif etc...
但这似乎有点混乱,有没有更好的重构方法?
非常感谢。
我有一个方法可以返回 1 - 100 之间的数字
取决于响应 (x) 是否在 100 - 90 之间,我想要一个响应,89 - 85 另一个 84 - 72 另一个......等等
我用
if x > 90
response a
elsif x > 85
response b
elsif etc...
但这似乎有点混乱,有没有更好的重构方法?
非常感谢。
利用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
您可以尝试一个表(a 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