为什么这两个是等价的?
(10..20).last #=> 20
(10...20).last #=> 20
这听起来像是Ruby 'Range.last' does not give the last value. Why?的副本,但这个问题的答案只是简单地说是设计的。为什么这样设计?当其他所有内容不同时,..
和...
为last
返回相同的值会是什么目的?
答案 0 :(得分:7)
我将回答您的问题:0.0...1.0
的最后一个值是什么?
一般来说,not every Range is enumerable。对于具有排除结尾的此类范围,实际上没有比用于定义范围结束的值更有意义的last
值其他。
另请注意,您可以枚举包含范围,其中last
不是枚举的最后一个值!
(0..3.2).to_a.last
# 3
(0..3.2).last
# 3.2
(0..Float::INFINITY).to_a.last
# don't wait up for this one
设计的动机是"用于定义范围结束的值"与"与范围"枚举的最后一个值不同。 last
为您提供前者。