[
https://issues.apache.org/jira/browse/GROOVY-11127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17744554#comment-17744554
]
ASF GitHub Bot commented on GROOVY-11127:
-----------------------------------------
paulk-asert commented on PR #1915:
URL: https://github.com/apache/groovy/pull/1915#issuecomment-1641892764
I think option 3 aligns best with existing functionality. That let's us add
option 4 down the track if there is interest, but we already have plus,
intersect etc. on collections and that is probably sufficient whereas and, or,
xor are more commonly associated with sets.
I don't think comparator variants make sense for plus for non-sets. It makes
a lot of sense for sets but would be a breaking change. A union method would be
a nice side-step to avoid a breaking change.
I agree with a lot of your thinking around union and non-sets. It may be
that if we did look at adding option 4 later, we might just cater for "and" and
"or" and not look at xor/union.
> 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
> Assignee: Paul King
> Priority: Trivial
> 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)