[#97536] [Ruby master Bug#16694] JIT vs hardened GCC with PCH — v.ondruch@...
Issue #16694 has been reported by vo.x (Vit Ondruch).
11 messages
2020/03/18
[ruby-core:97400] [Ruby master Misc#16678] Array#values_at has unintuitive behavior when supplied a range starting with negative index
From:
shevegen@...
Date:
2020-03-07 10:42:23 UTC
List:
ruby-core #97400
Issue #16678 has been updated by shevegen (Robert A. Heiler).
Actually .values_at() confused me when I tried to use my go-to method for
obtaining a slice from an Array:
a[3..5] # => [4, 5]
There I wondered why it did not return the same. :-)
But anyway; I believe the question is what -1 refers to. It should be the
last entry, right? Ok, so what should the 3 indicate? I think you reason
that it should refer to the fourth entry (I think ... if an Array count
begins at 0, then 3 would refer to the fourth entry). So from that point
of view I actually do not even disagree with you; perhaps I may have
missed some other explanation. (There is probably another explanation;
I think this has come up in the past too. I forgot the explanation,
though, if there was one.)
Personally I will stick with [] an leave .values_at() to others. I am
just so used to [] there. ;-)
----------------------------------------
Misc #16678: Array#values_at has unintuitive behavior when supplied a range starting with negative index
https://bugs.ruby-lang.org/issues/16678#change-84530
* Author: prajjwal (Prajjwal Singh)
* Status: Open
* Priority: Normal
----------------------------------------
Consider the following:
``` ruby
# frozen_string_literal: true
a = (1..5).to_a
p a.values_at(3..5) # => [4, 5, nil]
p a.values_at(-1..3) # => []
```
When the range begins with a negative `(-1, 0, 1, 2, 3)`, it returns an empty array, which surprised me because I was expecting `[1, 2, 3, 4]`.
The argument for this is that it cold be confusing to allow this because the index `-1` could refer to the last argument and it would be unintuitive to return an array `[5, 1, 2, 3, 4]` with jumbled values.
The argument against it is that it makes perfect sense to account for this case and return `[nil, 1, 2, 3, 4]`.
Opening a dialog to see what others think of this.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>