I would say +1 to ?= . There are a few cases where I would have used it. Typically, configuring some defaults after the fact. I'm not saying this is a good pattern in general, but it can come handy:
void finalize(Config config) { config.with { foo ?= 'foo' bar ?= 'bar' baz ?= 'baz' } } 2016-11-23 9:12 GMT+01:00 Guillaume Laforge <glafo...@gmail.com>: > At least between ||= and ?=, the latter, ?=, definitely make most sense > for Groovy. > Whether it's safe navigation with ?. or Elvis with ?:, we're still in the > same realm of nullability and Groovy Truth. > > On Wed, Nov 23, 2016 at 12:57 AM, Daniel Sun <realblue...@hotmail.com> > wrote: > >> 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 >> >> Cheers, >> Daniel.Sun >> >> --- 原始邮件 --- >> >> 发件人: "Jochen Theodorou [via Groovy]" <ml-node+[hidden email] >> <http:///user/SendEmail.jtp?type=node&node=5736906&i=0>> >> 已发: 2016年11月23日 上午12:47 >> 收件人: "Daniel Sun" <[hidden email] >> <http:///user/SendEmail.jtp?type=node&node=5736906&i=1>> >> 主题: 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 >> > } >> >> 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 >> <http://groovy.329449.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> >> >> ------------------------------ >> View this message in context: 回复: Re: [PROPOSAL]new operator ?= >> <http://groovy.329449.n5.nabble.com/Re-PROPOSAL-new-operator-tp5736906.html> >> >> Sent from the Groovy Dev mailing list archive >> <http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html> at >> Nabble.com. >> > > > > -- > Guillaume Laforge > Apache Groovy committer & PMC Vice-President > Developer Advocate @ Google Cloud Platform > > Blog: http://glaforge.appspot.com/ > Social: @glaforge <http://twitter.com/glaforge> / Google+ > <https://plus.google.com/u/0/114130972232398734985/posts> >