Is there any explicit statement about how indexing beyond the end of a 
collection should work?  Does it extend the collection or just return null.  
Does a withDefault collection do something different?
In general, arrays and collections should work the same, so the statement in 
the working with arrays section is a good one.  In the matter of indexing 
beyond the end of the array or collection, what is the shared behavior supposed 
to be:


  1.
return default value for type — aka null for reference and 0/false for 
primitives
  2.
throw out-of-bounds exception
  3.
something else?

________________________________
From: OCsite <o...@ocs.cz>
Sent: Thursday, February 6, 2025 10:11 AM
To: dev@groovy.apache.org <dev@groovy.apache.org>
Subject: [EXT] Re: a bug or my fault?

External Email: Use caution with links and attachments.

The overall intention is that whether you are using an array or a collection, 
the code for working with the aggregate remains the 
same<https://urldefense.com/v3/__https://docs.groovy-lang.org/latest/html/documentation/*_working_with_arrays__;Iw!!GFN0sa3rsbfR8OLyAw!ezrONlzs3yG6lC6cFTDF2ASi61brEmoT2ix7QriL2Tg7vhHIhMXTwpPoYFbS77qNBafdycrQlnIZgRDxsA$>.

In this particular case alas that good and noble intention does not quite work, 
and I wonder whether that is intentional (forgive the pun) or a mistake to be 
fixed in future, when there's nothing more pressing to do.

On 6. 2. 2025, at 13:30, Søren Berg Glasius <soe...@glasius.dk> wrote:

You assign 'b' as an Array, and arrays works differently than lists. Arrays are 
bound to their length, so 'a[2]' should report out of bounds as it is not 3 
elements long, whereas a list b[2] would report null

IMO it's working as intended.

Den tors. 6. feb. 2025 kl. 10.20 skrev OCsite <o...@ocs.cz<mailto:o...@ocs.cz>>:
Hi there,

is this inconsistence intentional and the proper Groovy behaviour, or is that a 
bug and should I add a jira ticket?

Thanks!

===
groovy:000> a=[1,2]
===> [1, 2]
groovy:000> b=a as Object[]
===> [1, 2]
groovy:000> a[2]
===> null
groovy:000> b[2]
ERROR java.lang.ArrayIndexOutOfBoundsException:
Index 2 out of bounds for length 2
groovy:000>
===


--

Med venlig hilsen,
Søren Berg Glasius

Hedevej 1, Gl. Rye, 8680 Ry
Mobile: +45 40 44 91 88
--- Press ESC once to quit - twice to save the changes.

Reply via email to