据我所知(0..)
和(0...)
确实是同一回事,但是,如果您看着the range documentation会说
(1..)
和(1...)
不相等,尽管从技术上讲代表相同的顺序。
所以我一直四处寻找,我找不到什么区别。
以上两个范围有何区别?
答案 0 :(得分:4)
从RubyDocs:
rng == obj→是或否
仅当obj是
Range
,具有相同的开始和结束项目(通过将它们与==进行比较)并且具有与范围相同的exclude_end?
设置时,才返回true。
所以:
(1..).exclude_end?
=> false
(1...).exclude_end?
=> true
(1..) == (1...)
=> false
因此,正如@max所说,这实际上是没有意义的区别,但是从技术上来说,Ruby认为它们是不同的,因为从技术上来说,它们是infinity - 1
。