> From: Guillaume Poirier-Morency <guillaumepoiriermore...@gmail.com> > Sent: Sunday, 28 May 2017, 16:59 > Subject: Re: [Vala] Null Coalescing Assignment Operator
> Le dimanche 28 mai 2017 à 10:20 +0200, Ulink a écrit : > > > thing = thing ? create (); > > > > I think you meant > > > > thing = thing ?? create (); > Yeah, my mistake! Evan actually pointed that out first on IRC. > > Edward seems lazy and don't want to write "thing" two times ;-) > What I think we need is an Elvis accessor to turn: > C? c = null; > var a = thing_a (); > if (a != null) { > var b = thing_b (); > if (b != null) { > c = thing_c (); > } > } > into: > var c = thing_a ()?.thing_b ()?.thing_c (); I think it's better just to give your variables sensible defaults and avoid the whole null things as much as possible. So use an empty string for a customer without an email address and so on. Look up the computer scientist Tony Hoare and why he thinks nulls were his billion dollar mistake! :) I think the ?. notation is often referred to as the safe navigation operator. As you say there is also the Elvis operator, ?:, when used as a binary operator and ? : used as a ternary operator. And of course ?? used as a null coalescing operator. If programmers aren't using this kind of symbolic logic regularly it can be hard to recall precisely what is supposed to be happening and read existing code. It's kind of like the combination of key presses needed to exit vim when it suddenly pops up on a newly installed Unix system. Take a look at this for a mildly amusing read: https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/ As far as the null safe navigation operator goes here are some interesting counterpoints: http://enterprisecraftsmanship.com/2015/05/11/3-misused-of-operator-in-c-6/ Al _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list