As in the documentation, two ranges that represent the same elements are considered different:
(1..2).to_a # => [1, 2]
(1...3).to_a # => [1, 2]
(1..2) == (1...3) # => false
Why are two ranges that represent the same elements are considered different? I don't think that's how it works in math though.
In PostgreSQL, it is implement correctly:
test=# select int4range(1,2, '[]') = int4range(1,3, '[)');
?column?
----------
t
(1 row)
These ranges aren't equal - consider the case when you call include?
with a floating-point value:
(1 .. 2).include? 2.5
false
(1 ... 3).include? 2.5
true
They happen to return the same results if you compare them to integers, but that doesn't mean they're identical.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With