2737


標準クラスか`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]

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


CC BY-SA 3.0
2014-12-28T07:39:49.020
2730
2014-12-28T09:49:17.523
2014-12-28T09:49:17.523
3271
3271
question
ruby
数値を特定の範囲に収める


@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]


CC BY-SA 3.0
2014-12-28T09:38:26.097
2737
2014-12-28T09:38:26.097
4978
2730
answer