Ruby 2.7 アドベントカレンダーの16日目の記事です。
Integer
Integer#[]
: 引数に範囲指定
Integer#[]
は二進数で指定したビットを 1 か 0 で返します。
114.to_s(2) #=> "1110010" 114[0] #=> 0 114[1] #=> 1 114[2] #=> 0 114[3] #=> 0 114[4] #=> 1 114[5] #=> 1
2.7 では範囲を指定するとその範囲のビットからなる数値を返すようになりました。
114[2, 4] #=> 12 1110010 の2bit目から4bit分の 1100 114[2..5] #=> 12 1110010 の2bit目から5bit目までの 1100
Complex
Complex#<=> 追加
Complex(複素数クラス)に <=>
メソッドが追加されました。
虚数部が0の場合に実数部を比較した結果を返します。虚数部が0以外の場合はnilを返します。
(3+0i) <=> (2+0i) #=> 1 (3+0i) <=> 2 #=> 1 (3+1i) <=> 2 #=> nil
Comparable
Comparable#clamp : 引数に Range 指定
clamp は指定引数の範囲内であれば自身を、範囲外であれば引数で指定した値を返します。
5.clamp(3, 7) #=> 5 範囲内 5.clamp(1, 3) #=> 3 範囲よりも大きい 5.clamp(7, 9) #=> 7 範囲よりも小さい
2.7 では引数に Range オブジェクトを指定できるようになりました。
5.clamp(3..7) #=> 5 範囲内 5.clamp(1..3) #=> 3 範囲よりも大きい 5.clamp(7..9) #=> 7 範囲よりも小さい