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