我有將1之間返回一個數的方法 - 根據所述響應(x)是否是 之間100 100匹配響應於數字多量程
- 90我想一個響應,89 - 85另一個84 - 72另一...等
我用
if x > 90
response a
elsif x > 85
response b
elsif etc...
但這似乎有些凌亂,有沒有這個重構的一個更好的辦法?
非常感謝。
我有將1之間返回一個數的方法 - 根據所述響應(x)是否是 之間100 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
你可以嘗試一個表(Hash
),其中鍵是範圍和值AR的數字要返回:
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
「響應X」是代碼(命令式代碼)還是表達式? – tokland
http://codereview.stackexchange.com將是適當的地方。 –