Hi Jochen,

    ?= 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

a  = a * 2
a *= 2

a  = a ?: 2
a ?= 2


--- 原始邮件 ---

发件人: "Jochen Theodorou [via Groovy]" <ml-node+[hidden email]>
已发: 2016年11月23日 上午12:47
收件人: "Daniel Sun" <[hidden email]>
主题: Re: [PROPOSAL]new operator ?=

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
> }


> 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:
To unsubscribe from [PROPOSAL]new operator ?=, click here.

View this message in context: 回复: Re: [PROPOSAL]new operator ?=
Sent from the Groovy Dev mailing list archive at Nabble.com.