groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: [VOTE]About the Union Type for method/constructor declaration
Date Sun, 23 Jul 2017 00:13:52 GMT
Since this feature would have been helpful to me on several occasions 
(avoiding to have to introduce an interface or go dynamic) I would 
tentatively have said +1.
Tentatively, because I am at the same time worried that a feature like 
that could prevent framework developers from introducing a meaningful 
interface hierarchy, over time possibly leading to code like
void 
doGenericStuff(DeviceManager|VerySpecializedClassWithLongName|TautologicalFluxCompensatorMatrixElement|KungFooMaster

x) { ... }
On the other hand, IDE refactoring support could allow for automatic 
extraction of a shared functionality interface between the given classes 
here...

I would also have thought of the exact same syntax - can you explain why 
you think it would break future extensions, Paul ?
mg

On 23.07.2017 01:50, Paul King wrote:
> I would be leaning towards -1 without further justification. Even 
> though I don't think we want to rush into union types in Groovy, 
> wouldn't this syntax rule out us having it down the track?
>
> Cheers, Paul.
>
>
> On Sun, Jul 23, 2017 at 8:28 AM, Daniel Sun <realbluesun@hotmail.com 
> <mailto:realbluesun@hotmail.com>> wrote:
>
>     Hi all,
>
>            I've been thinking about Union Type for method/constructor
>     declaration. It is similar to multi-catch in try-catch statement, e.g.
>
>     class UnionTypeSample {
>       public UnionTypeSample(A|B|C p) {
>          // do something
>       }
>
>       def m(D|E p) {
>         // do something
>       }
>     }
>
>           Groovy will translate the above code into the following
>     code, which is
>     also the same way how multi-catch is handled.
>
>     class UnionTypeSample {
>       public UnionTypeSample(A p) {
>          // do something
>       }
>
>       public UnionTypeSample(B p) {
>          // do something
>       }
>
>       public UnionTypeSample(C p) {
>          // do something
>       }
>
>       def m(D p) {
>         // do something
>       }
>
>       def m(E p) {
>         // do something
>       }
>     }
>
>          Any thoughts?
>     ----------------------------------
>       [+1] I like it
>       [  0] Not bad
>       [-1] I do not like it
>     ----------------------------------
>
>     Cheers,
>     Daniel.Sun
>
>
>
>     --
>     View this message in context:
>     http://groovy.329449.n5.nabble.com/VOTE-About-the-Union-Type-for-method-constructor-declaration-tp5742265.html
>     <http://groovy.329449.n5.nabble.com/VOTE-About-the-Union-Type-for-method-constructor-declaration-tp5742265.html>
>     Sent from the Groovy Users mailing list archive at Nabble.com.
>
>


Mime
View raw message