You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Biestro (JIRA)" <ji...@apache.org> on 2018/09/19 14:16:00 UTC

[jira] [Commented] (JEXL-269) Indexed for-loop

    [ https://issues.apache.org/jira/browse/JEXL-269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16620657#comment-16620657 ] 

Henri Biestro commented on JEXL-269:
------------------------------------

On maps, looping on entries allows explicit access to both the key and the value per entry.
 {code:java}
 for(var e : map.entries()) {
      var key = e.key;
      var value = e.value;
.... 
}
{code}
 A list is not necessarily a RandomAccess collection; the so called iteration index may only be an iteration counter in the general case. And a counter should not be used as a general purpose access index the way a key is used in a map. Besides, the casual
{code:java}
var i = 0;
for(var item : list) { i += 1; ... }
{code} seems an understandable pattern to most coders.

 Arguably here again, shortening the syntax does not seem to make the intent clearer and may be very misleading in terms of performance.

> Indexed for-loop
> ----------------
>
>                 Key: JEXL-269
>                 URL: https://issues.apache.org/jira/browse/JEXL-269
>             Project: Commons JEXL
>          Issue Type: New Feature
>    Affects Versions: 3.1
>         Environment: I have created a PR for this feature, please see [PR#12|https://github.com/apache/commons-jexl/pull/12]
>            Reporter: Dmitri Blinov
>            Priority: Minor
>
> Introduce new extended syntax of 'for' statement, which allows to specify two variables, like the following
> {code:java}
> for (var i, item : list){code}
> Inside the loop, the first variable gets current iteration index, starting from 0, and the second variable gets current iterated value. The special consideration is taken for iteration over map entries, like the following
> {code:java}
> for(var key, entry : map){code}
> , in this case the first variable is the map key, and the second is the corresponding map value



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)