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

Dmitri Blinov commented on JEXL-266:
------------------------------------

I see the main problem with overload is that we can have either an overloaded 
method from Arithmetic or default implementation from Uberspect to be called. 
That means we should re-implement all use-cases from Ubserpect in Arithmetic, 
not only for {{Map}}, but for other types, including those with duck-typed 
"iterator" method. It would be much easier if we could call 
Uberspect.getIterator() from Arithmetic, but these classes are unrelated by 
design.

I see no problem with 'JexlKeyword ' annotation, as long as it provides a 
possibility to add new keywords, or rather statement style constructs, to the 
language. From the other hand, if we would have lexically an 
ExpressionStatement consisting of sole Identifer, we could easiy distinguish 
the case by looking at the variables and context parameters. If there is a 
variable or a context parameter that can be resolved by this identifier, then 
return a value of that variable, otherwise, if there is a context/  arithmetic 
defined method without parameters, then execute it, since we do not have method 
references in JEXL anyway.

> Allow to remove an element from iterator collection within for-loops
> --------------------------------------------------------------------
>
>                 Key: JEXL-266
>                 URL: https://issues.apache.org/jira/browse/JEXL-266
>             Project: Commons JEXL
>          Issue Type: New Feature
>    Affects Versions: 3.1
>         Environment: I have created a patch as initial implementation for 
> this new feature, please see github pull request here 
> [pr#5|https://github.com/apache/commons-jexl/pull/5]. I whould be very 
> grateful if this could be interesting for the community and included in 
> master branch. Thanks in advance!
>            Reporter: Dmitri Blinov
>            Priority: Minor
>
> The for-loop in JEXL provides a convenient way to iterate over different 
> types of collections, however, its not possible for a script writer to 
> utilize underlying
> {code:java}
> iterator.remove(){code}
> method within such a loop. The proposal is to introduce new {{remove}} 
> statement which should be used within for-loops and should internally call 
> {{iterator.remove()}} method and skip the loop to the next element;
> For example, the following code should remove items {{1,2,3}} from set and 
> return value {{3}}.
> {code:java}
> var set = {1,2,3,4,5,6}; for (var item : set) if (item <= 3) remove; return 
> size(set)
> {code}



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

Reply via email to