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

Reply via email to