Actions
Misc #19131
openMatchData#values_at(): addressing with Range and Integer index behaves differently for the first element (entire matched string)
Misc #19131:
MatchData#values_at(): addressing with Range and Integer index behaves differently for the first element (entire matched string)
Status:
Open
Assignee:
-
Description
I've noticed a strange nuance and not sure whether it's intentional or not. In case it's intentional - it seems to me inconsistent.
I will illustrate it with the following example:
/(.)(.)(.)(.)/.match("abcde").values_at(-5..-1) # => ["abcd", "a", "b", "c", "d"]
/(.)(.)(.)(.)/.match("abcde").values_at(-5) # => [nil]
So with a negative index we can address the whole matched string (0 element) with a Range argument but cannot with an Integer index.
We can index with negative values only captured values:
/(.)(.)(.)(.)/.match("abcde").values_at(-4) # => ["a"]
/(.)(.)(.)(.)/.match("abcde").values_at(-3) # => ["b"]
/(.)(.)(.)(.)/.match("abcde").values_at(-2) # => ["c"]
# ...
I would expect Range and Integer arguments are handled consistently and either both allow to address the first element with negative index or both disallow it.
Updated by andrykonchin (Andrew Konchin) over 3 years ago
- Description updated (diff)
Updated by andrykonchin (Andrew Konchin) over 3 years ago
- Description updated (diff)
Actions