Actions
Misc #16678
openArray#values_at has unintuitive behavior when supplied a range starting with negative index
Status:
Open
Assignee:
-
Description
Consider the following:
# 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.
Actions
Like0
Like0Like0Like0