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()?
   - I thought that only references appended with question mark sign (e.g.
   List<string>?) can be null, cant' they?


BR, Vitaly Kirsanov
skype: vkirsan

2014-12-02 18:22 GMT+03:00 Luca Bruno <lethalma...@gmail.com>:

> On 02/12/2014 16:03, Виталий Кирсанов wrote:
> > Hello list.
> >
> > Probably there is a well-known answer to this but I failed to find it.
> >
> > Native C glib states that a null pointer GList is a valid list and it can
> > be used as an argument to various list operations such as
> g_list_append().
> > And to check whether the list is empty you need just to compare the head
> of
> > the list with NULL;
> >
> > But it's not that straightforward with vala. If I write:
> >
> > var list = List<string>();
> >
> > then vala generates something like:
> >
> > GList * list = NULL;
> >
> >
> > And after that I can call some of methods of list (e.g.
> > list.append("hello");) but call to list.data would lead to a crash.
> That's
> > a bit strange but ok, I understand that functions able to operate null
> data
> > values like GList are not very well mapped to vala where this reference
> may
> > not be null.
> >
> > The main question is when I have created list variable in vala, made some
> > insertions and deletions how do I check whether it is empty or not?
> > Probable answer would be I can call list.length(); method but it will not
> > be efficient if, say, I call it on every iteration of a loop and the list
> > is not empty.
> >
> > Is there a more simple and efficient way?
> == null
>
> :)
> _______________________________________________
> 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