0

Rubyで整数を特定の範囲に合わせる最もクリーンな方法は何ですか? 呼び出された整数が範囲を超えた場合に、指定された範囲の最小値または最大値を返すメソッド。

このようなメソッドはネイティブ Ruby に存在しますか?

120.fit(1..100) # => 100
-20.fit(1..100) # => 1

それとも、同じことをする素敵なライナーがありますか?

編集

これを達成するには、次のようなことをしなければなりません:

some_integer = some_range.min if some_integer <= some_range.min
some_integer = some_range.max if some_integer >= some_range.max
4

3 に答える 3

3

このようなもの?

class Fixnum
  def fit(range)
    self > range.max ? range.max : (self < range.min ? range.min : self)
  end
end

使用法:

> 5.fit(1..4) #=> 4
> 0.fit(1..4) #=> 1
> 3.fit(1..4) #=> 3
于 2013-05-10T14:48:42.630 に答える
2

きれいになる自信はありませんが、これは方法です

(1..100).minmax.push( -50 ).sort[1]
# => 1
(1..100).minmax.push( 120 ).sort[1]
# => 100
于 2013-05-10T14:54:37.590 に答える