Ruby 3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Rangeクラス > new
new(first, last, exclude_end = false) -> Range
[permalink][rdoc]first から last までの範囲オブジェクトを生成して返します。
exclude_end が真ならば終端を含まない範囲オブジェクトを生成します。exclude_end 省略時には終端を含みます。
Range.new(1, 10) # => 1..10
Range.new(1, 10, true) # => 1...10
require 'date'
Range.new(Date.today, Date.today >> 1).each {|d| puts d }
# => 2017-09-16
# 2017-09-17
# ...
# 2017-10-16
require 'ipaddr'
Range.new(IPAddr.new("192.0.2.1"), IPAddr.new("192.0.2.3")).each {|ip| puts ip}
# => 192.0.2.1
# 192.0.2.2
# 192.0.2.3
MyInteger = Struct.new(:value) do
def succ
self.class.new(value + 1)
end
def <=>(other)
value <=> other.value
end
def to_s
value.to_s
end
end
Range.new(MyInteger.new(1), MyInteger.new(3)).each {|i| puts i }
# => 1
# 2
# 3