可枚举有:
(3..5).to_enum.first # => 3
但它没有最后:
(3..5).to_enum.last # => NoMethodError: undefined method `last' for #<Enumerator: 3..5:each>
这是为什么?
解决方法
这是因为不是所有可枚举的对象都有最后一个元素.
最简单的例子是:
[1,2,3].cycle # (an example of what cycle does) [1,3].cycle.first(9) #=> [1,3,1,3]
即使枚举器元素是有限的,也没有简单的方法来获得最后一个元素,而不是迭代到最后的元素,这将是非常低效的.