Steven Schveighoffer:
> I think the point is, the statement x = x + 1; isn't any more or less  
> ambiguous in D than it is in python.  There is a well-defined meaning (and  
> in fact the same meaning).

It's not the same meaning, this program prints "1":

import std.c.stdio: printf;
class Foo {
    int x;
    this() {}
    void foo() {
        x = x + 1;
    }
}
void main() {
    Foo f = new Foo();
    f.foo();
    printf("%d\n", f.x); // prints 1
}

An equivalent Python program with "x = x + 1;" prints:
UnboundLocalError: local variable 'x' referenced before assignment
Because the usage of "self." is obligatory.

Anyway, this whole thread is not about Python, it's about D.

Bye,
bearophile

Reply via email to