Yeah, a nice example with with{}! On Wed, Nov 23, 2016 at 9:15 AM, Cédric Champeau <cedric.champ...@gmail.com> wrote:
> 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-tp5 >>> 736886p5736900.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> >> > > -- 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>