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
--- 原始邮件 ---
发件人: [email protected]
已发: 2016年11月23日 11:25
收件人: [email protected], "Daniel Sun" <[email protected]>
抄送: [email protected]
主题: Re: [PROPOSAL]new operator ?=
Daniel,
> On 23. 11. 2016, at 12:57 AM, Daniel Sun <[email protected]> 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.