RubyでのRangeオブジェクト学習ノート

1459 ワード

Rangeは範囲オブジェクトのクラスです.定義するときは範囲オペレータ「.」を使用できます.あるいは「…」、“..”生成された範囲オブジェクトには、開始点と終了点、「...」が含まれます.生成された範囲オブジェクトには、開始点と終了点は含まれません.範囲は、数値、アルファベット、文字列、時間などのランダムオブジェクトで定義できます.
1、Rangeオブジェクトの定義
 
  
r1=1..5     # r1, 1,2,3,4,5
r2=Range.new(1,5)  # 1..5
r3=1...5     # r3, 2,3,4
r4=Range.new(1,5,true) # 1...5

2、Rangeオブジェクトの使い勝手
 
  
r=rand*100
rf=format('%.2f',r)
case r
when 90..100
 puts " :#{rf} : "
when 70..90
 puts " :#{rf} : "
when 50..70
 puts " :#{rf} : "
else
 puts " :#{rf} : "
end

通常、時間の遍歴は非常に面倒なプロセスですが、Rangeがあれば、次の例のコードのように簡単になります.
 
  
# 2013-01-01 2013-02-28 , Date
begin_date = Date.parse '2013-01-01' 
end_date = Date.parse '2013-02-28'
r1=begin_date .. end_date
r1.each{|date| puts date}
# abc-xyz
r2='abc' .. 'xyz'
r2.each{|str| puts str}
#
r3='a'..'z'
puts r3==='A'  #false
puts r3.include?'k' #true
puts r3.min   #a
puts r3.max   #z
puts r3.first(3)  #a,b,c
puts r3.last(4)  #w,x,y,z