new(first, last, exclude_end = false) -> Range
[permalink][rdoc][edit]-
first から last までの範囲オブジェクトを生成して返します。
exclude_end が真ならば終端を含まない範囲オブジェクトを生成します。exclude_end 省略時には終端を含みます。
- [PARAM] first:
- 最初のオブジェクト
- [PARAM] last:
- 最後のオブジェクト
- [PARAM] exclude_end:
- 真をセットした場合終端を含まない範囲オブジェクトを生成します
- [EXCEPTION] ArgumentError:
- first <=> last が nil の場合に発生します
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