数値を特定の範囲に収める


標準クラスか`active_support`に数値を特定の範囲に収めるメソッドが用意されていたと思うのですが、名前を忘れてしまいました。

具体的にはこのような動作をするメソッドです。

[code]

    class Numeric
      def within(min,max)
        [[min, self].max, max].min
      end
    end
    
[/code]

これを使って

[code]

    3.within(1,5)
    #=> 3
    -1.within(1,5)
    #=> 1
    6.within(1,5)
    #=> 5
    
[/code]

単なる私の記憶違いかもしれませんが、ご存知のかたおられますか？




@h2so5 さんのコメントにあるように、まだメソッドはないようです。

  * Ruby: #4574 :[Numeric#within](https://bugs.ruby-lang.org/issues/4574)
  * Ruby: #10594 :[Numeric#clamp](https://bugs.ruby-lang.org/issues/10594)

提案部分から疑似実装できますね:

[code]

    class Numeric
      def clamp( range)
        [[range.begin, self].max, range.end].min
      end
    end
    
[/code]

出力:

[code]

    234234234523.clamp(0..100)       # => 100
    12.clamp(0..100)                 # => 12  
    -38817112.clamp(0..100)          # => 0
    123456.clamp(0..Float::INFINITY) # => 123456
    12.clamp('a'..'z')               # => error
    
[/code]




@h2so5 さんのコメントにあるように、まだメソッドはないようです。

  * Ruby: #4574 :[Numeric#within](https://bugs.ruby-lang.org/issues/4574)
  * Ruby: #10594 :[Numeric#clamp](https://bugs.ruby-lang.org/issues/10594)

提案部分から疑似実装できますね:

[code]

    class Numeric
      def clamp( range)
        [[range.begin, self].max, range.end].min
      end
    end
    
[/code]

出力:

[code]

    234234234523.clamp(0..100)       # => 100
    12.clamp(0..100)                 # => 12  
    -38817112.clamp(0..100)          # => 0
    123456.clamp(0..Float::INFINITY) # => 123456
    12.clamp('a'..'z')               # => error
    
[/code]

