groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From 孙 岚 <realblue...@hotmail.com>
Subject 回复: Re: [PROPOSAL]new operator ?=
Date Wed, 23 Nov 2016 05:49:24 GMT
Hi OC,

     OK. I understand your words :)

     About the new operator ?=, some like it, some do not, others say "huh…", so the feature
will not be added until most of us want it ;)

Cheers,
Daniel.Sun




--- 原始邮件 ---

发件人: ocs@ocs.cz
已发: 2016年11月23日 11:25
收件人: dev@groovy.apache.org, "Daniel Sun" <realbluesun@hotmail.com>
抄送: dev@groovy.incubator.apache.org
主题: Re: [PROPOSAL]new operator ?=


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