Hello all! I just tried to compile this:
> int main(string[] argv) > { > List<string> list = new List<string>(); > assert( list == null ); > return 0; > } It compiles and runs. But this one doesn't compile: > int main(string[] argv) > { > List<string> list; > assert( list == null ); > return 0; > } So, variable should be initialized, even thought it is null after the initialization. And vala doesn't have so called diamond operator (am I right?), so this code is not valid: > List<string> list = new List<>(); Would diamond operator be implemented in the future? Anyone needs it? Regards, Dmitry 02.12.2014, 17:38, "Luca Bruno" <lethalma...@gmail.com>: > On 02/12/2014 16:34, Виталий Кирсанов wrote: >> Hm, indeed. The following piece of code works fine: >> >> int main(string[] argv) >> { >> List<string> list = new List<string>(); >> assert( list == null ); >> return 0; >> } >> >> So this seems to be the answer to my question. But still there are two >> weird things in my opinion: >> >> - Why I need to call operator new if the result value is still null? >> Can't I simply declare a reference List<string> list; and then call e.g. >> append()? > > Yes, you can. "new List()" is just "null". >> - I thought that only references appended with question mark sign (e.g. >> List<string>?) can be null, cant' they? > > There are several exceptions due to historical reasons. Null is quite > weak in Vala by default in several places. > There's an experimental non-null flag for valac, but that's not much > worked on. > > Best regards, > _______________________________________________ > vala-list mailing list > vala-list@gnome.org > https://mail.gnome.org/mailman/listinfo/vala-list _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list