Ruby'Range.last'没有给出最后一个值.为什么?

Pau*_*oor 8 ruby range

在ruby Range对象中使用三点符号时,我得到:

(0...5).each{|n| p n}
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

当我使用'last'方法时,我得到:

(0...5).last
 => 5 
Run Code Online (Sandbox Code Playgroud)

我原以为4

这是一个错误吗?或者有什么我不了解Range对象的概念?

Ste*_*fan 12

这是设计的.Ruby 2.0文档更具体:

请注意,没有参数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]
Run Code Online (Sandbox Code Playgroud)