为什么这两者是等同的呢?
(10..20).last #=> 20
(10...20).last #=> 20这听起来像是Ruby‘Range.last’不给出最后一个值。为什么?的翻版,但这个问题的答案只是说它是设计出来的。为什么它是这样设计的?当其他一切都不同时,..和...返回last的相同值的目的是什么?
发布于 2014-09-19 15:34:30
我将用一个问题回答您的问题:0.0...1.0的最后一个值是多少?
一般说来,并不是每个范围都是可枚举的。.对于具有排除结束的此类范围,除了用于定义范围结束的值之外,实际上没有有意义的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给出了前者。
https://stackoverflow.com/questions/25937025
复制相似问题