Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.6-beta-2
-
Fix Version/s: 1.7-beta-1
-
Component/s: None
-
Labels:None
-
Number of attachments :
Description
Groovy's list-indexing semantics originally came from Ruby, where x[2,5] means the same as x[2 ..< 5]. However, at some point it was changed r-values (getAt()), but never for l-values (putAt()). So currently we have this:
x = [4, 5, 6, 7]
assert x[1, 3] == [5, 7]
x[1, 3] = 55
assert x == [4, 55]
If you try to index with a list of any length other than two, you get an exception, but only as an l-value, not an r-value.
The proposal is that x[list1] = list2 should succeed when list1 has the same number of elements as list2, replacing the corresponding elements, and throw an exception otherwise. Also x[list1] = nonlist should replace all elements that have the specified indices with the given nonlist element.
This was discussed on the groovy-dev mailing list, subject "Bug or Feature?", starting Nov. 12, 2008.
Activity
| Field | Original Value | New Value |
|---|---|---|
| Status | Open [ 1 ] | Resolved [ 5 ] |
| Fix Version/s | 1.6 [ 13832 ] | |
| Fix Version/s | 1.7-beta-1 [ 14014 ] | |
| Resolution | Fixed [ 1 ] |
| Status | Resolved [ 5 ] | Closed [ 6 ] |