1から100までの数値を返すメソッドがあります
応答(x)が100〜90の間にあるかどうかに応じて、1つの応答、89〜85の別の84〜72の別の応答が必要です...など
私が使う
if x > 90
response a
elsif x > 85
response b
elsif etc...
しかし、これは少し厄介なようですが、これをリファクタリングするより良い方法はありますか?
どうもありがとう。
1から100までの数値を返すメソッドがあります
応答(x)が100〜90の間にあるかどうかに応じて、1つの応答、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
キーが範囲で、値が戻りたい数値であるテーブル (a) を試すことができます。
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