LoginSignup
1
0

More than 3 years have passed since last update.

範囲内か調べる・範囲内に収めるメソッド(between?・clamp)

Posted at

between?メソッド

レシーバの値が範囲内にあるかどうか調べるメソッドです。

obj.between?(min, max)
#次のコードと同義
obj >= min and obj <= max

レシーバの値が引数minとmaxの間に含まれればtrue,そうでなければfalseを返します
レシーバの値がminまたはmaxと等しいときはtrueを返します。

3.between?(1, 5)    #=> true
6.between?(1, 5)    #=> false
5.between?(1, 5)    #=> true

clampメソッド

レシーバの値を範囲内に収めるメソッドです。
レシーバの値が引数minより小さければminを、レシーバの値が引数maxより大きければmaxを返します。
引数minとmaxの間に含まれればレシーバの値をそのまま返します。

7.clamp(0, 10)   #=> 7
12.clamp(0, 10)  #=> 10
-3.clamp(0, 10)  #=> 0

between?とclampメソッドは共にComparableモジュールのメソッドです。
なのでComparableモジュールをインクルードしている数値クラスやString、Timeなどでも使うことができます。

'b'.clamp('a', 'f')      #=> 'b'
'g'.clamp('a', 'f')      #=> 'f'

引用元
Ruby 2.6.0 リファレンスマニュアル module Comparable
https://docs.ruby-lang.org/ja/latest/class/Comparable.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0