Spencer Allain created GROOVY-11127:
---------------------------------------

             Summary: Add '|', '&', and '^' operators to Set and SortedSet
                 Key: GROOVY-11127
                 URL: https://issues.apache.org/jira/browse/GROOVY-11127
             Project: Groovy
          Issue Type: New Feature
          Components: groovy-jdk
            Reporter: Spencer Allain
             Fix For: 5.x


Many languages conventionally allow sets to use '|' as union, '&' as 
intersection, and '^' as symmetric difference operations on sets.

This ticket is proposing adding these operations as DefaultGroovyMethods for 
Set and SortedSet such that the below tests should pass:

{code:java}
Set a = [1,2,3,4] as Set
Set b = [3,4,5,6] as Set

assert (a | b) == [1,2,3,4,5,6] as Set
assert (a & b) == [3,4] as Set
assert (a ^ b) == [1,2,5,6] as Set

Set d = ['a', 'B', 'c'] as Set
Set e = ['A', 'b', 'D'] as Set

assert d.and(e, String.CASE_INSENSITIVE_ORDER) == ['a', 'B'] as Set
assert d.and(e, Comparator.naturalOrder()) == [] as Set
assert d.xor(e, String.CASE_INSENSITIVE_ORDER) == ['c', 'D'] as Set
assert d.xor(e, Comparator.naturalOrder()) == ['a', 'B', 'c', 'A', 'b', 'D'] as 
Set
{code}

A  [Pull Request|https://github.com/apache/groovy/pull/1915] exists that 
implements the desired additions for the 5.x groovy branch (master), but it 
should be fairly easy to make the functionality available in 4.x if desired.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to