0

1から100までの数値を返すメソッドがあります

応答(x)が100〜90の間にあるかどうかに応じて、1つの応答、89〜85の別の84〜72の別の応答が必要です...など

私が使う

if x > 90
 response a
elsif x > 85
 response b
elsif etc...

しかし、これは少し厄介なようですが、これをリファクタリングするより良い方法はありますか?

どうもありがとう。

4

2 に答える 2

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
于 2012-12-09T19:29:45.867 に答える
3

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
于 2012-12-09T19:26:09.633 に答える