红宝石:(0 ..)和(0 ...)

时间:2020-07-23 00:38:37

标签: ruby range

据我所知(0..)(0...)确实是同一回事,但是,如果您看着the range documentation会说

  • (1..)(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

相关问题