When using the triple dot notation in a ruby Range object, I get this:
(0...5).each{|n| p n} 0 1 2 3 4
When I use the \'last\' method I get
This is by design. The Ruby 2.0 documentation is more specific:
Note that with no arguments last will return the object that defines the end of the range even if exclude_end? is true. (10..20).last #=> 20 (10...20).last #=> 20 (10..20).last(3) #=> [18, 19, 20] (10...20).last(3) #=> [17, 18, 19]
Note that with no arguments last will return the object that defines the end of the range even if exclude_end? is true.
last
exclude_end?
true
(10..20).last #=> 20 (10...20).last #=> 20 (10..20).last(3) #=> [18, 19, 20] (10...20).last(3) #=> [17, 18, 19]