Jochen Theodorou wrote
> 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?
I will chip in as the person who proposed that new operator on Twitter to
Daniel (thanks Daniel and Guillaume for raising it for discussion here).
This idea came up when I needed to add a default key in a map pre-populated
with another map:
def options = [:]
options.putAll(userOptions)
options.fit = options.fit ?: "max"
I think that from the above you can see that this operator makes more sense
when you are defaulting a value that is nested and not just a local
variable. To make it even more drastic:
foo.options.fit = foo.options.fit ?: "max"
vs.
foo.options.fit ?= "max"
I now see that I could actually simplify the first example in my email to:
def options = [fit: "max"]
options.putAll(userOptions)
but this is not the first time that I wish this operator existed.
Anyway, I see that it looks like Daniel has decided that it's not worth the
effort but thanks to everybody for taking my proposal into consideration.
Cheers,
Marcin
--
View this message in context:
http://groovy.329449.n5.nabble.com/PROPOSAL-new-operator-tp5736886p5736916.html
Sent from the Groovy Dev mailing list archive at Nabble.com.