On Wed, 2010-01-20 at 14:00 +0800, Nor Jaidi Tuah wrote:
> Given this:
> 
> for (int i=0; i < 10; i++) {
>     button[i].clicked.connect ((s) => {stdout.printf ("%d\n", i);});
> }
> 
> all the buttons, when clicked, outputs 10.
> i.e., the variable i is treated as non-local and shared
> by all those closures.
> 
> Is this the correct semantic?

Yes.

> If this is up for debate I would say that this is
> a wrong semantic. Different iteration of the for loop
> should use "different" i.

The scope of the variable `i` covers the whole `for` statement, not just
a single loop iteration (otherwise i++ at the end of each iteration
wouldn't make any sense). While it's true that this may cause mistakes,
we can't change this without breaking consistency. foreach loops should
be more convenient in that regard.

Jürg

_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to