groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ocs@ocs.cz" <...@ocs.cz>
Subject Re: [PROPOSAL]new operator ?=
Date Wed, 23 Nov 2016 03:25:49 GMT
Daniel,

> On 23. 11. 2016, at 12:57 AM, Daniel Sun <realbluesun@hotmail.com> wrote:
>     ?= is similar with *=, +=, etc in their usage, and they are all for convenience and
readability. So if ?= does not make sense, why others does?  :-P

Can't speak for Jochen of course, but I daresay the difference is that

> a  = a * 2
> a *= 2

one pretty often writes these things and without the op= shortcuts, there's no decent way
to do that. Contrariwise...

> a  = a ?: 2

... one almost never writes this, for it is just as easy and -- in my personal and potentially
flawed opinion, much more intention-revealing -- to write

if (!a) a=2

and therefore...

> a ?= 2

...this seems indeed rather at the superfluous side.

All the best,
OC

> On 22.11.2016 15:25, Guillaume Laforge wrote: 
> > It's a feature that's often be requested. 
> > I think Ruby's got an equivalent with ||=, and it's often the reference 
> > people give when exploring our Elvis operator coming from a ruby 
> > background in particular. 
> > I've had several opportunities where I could've used this operator. 
> > It might make for a nice addition. 
> 
> while I agree that ||= is more like what ruby offers we have the 
> problem, that for Groovy a||b always will be evaluated as boolean. 
> 
> In fact first we apply groovy truth to a and if that is not true, we do 
> the same for b and if that is not true we return false, otherwise true. 
> Which means a = a||b would not be equal to a ||= b if that is supposed 
> to be the same as proposed for ?=. 
> 
> What would come near to that is |, which is mapped to a method call to 
> "or". And then again, it has already a meaning for numbers, that does 
> not fit. 
> 
> So for me a new operator makes more sense. But frankly... 
> 
> > def foo(x) { 
> >   return x ?: "empty" 
> > } 
> 
> or even 
> 
> > def foo(x) { 
> >   x = x ?: "empty" 
> >   return x 
> > } 
> 
> vs. 
> 
> > def foo(x) { 
> >   x ?= "empty" 
> >   return x 
> > } 
> 
> Is that really worth it? Does it really improve readability that much? 
> Or maybe someone has a better example? 
> 
> it is different for !in and !instanceof, because of the spacing and 
> because you may have them in complex expressions. But ?= is a statement 
> and I would very much dislike this usage as expression. 
> 
> For now I am -1 on this 
> 
> bye Jochen 
> 
> 
> 
> If you reply to this email, your message will be added to the discussion below:
> http://groovy.329449.n5.nabble.com/PROPOSAL-new-operator-tp5736886p5736900.html
> To unsubscribe from [PROPOSAL]new operator ?=, click here.
> NAML
> 
> View this message in context: 回复: Re: [PROPOSAL]new operator ?=
> Sent from the Groovy Dev mailing list archive at Nabble.com.


Mime
View raw message