On 12/26/10 6:04 PM, Tomek Sowiński wrote:
spir<[email protected]>  wrote:
On Sun, 26 Dec 2010 14:54:12 +0100
Andrej Mitrovic<[email protected]>  wrote:

int i;    // auto-initialized to int.init
int i = void; // not initialized

Thanks. Actually this solves my "semantic" issue, did not even think
at 'void'. (I will use it often). By the way, I don't want to play the
superhero with uninitialised values, simply sometimes the initial
value cannot be known at declare place.
        int i;
        if (foo)
           i=0;
        else if (bar)
           i=1;
        else
           i=2;
        playWith(i);

int i = foo ? 0 : bar ? 1 : 2;

The idiom breaks when you need e.g. a loop, which can't be an expression. Fortunately you can always use a lambda - a common idiom in functional code:

int i = { code code code }();

This is all the more necessary and interesting with immutability - you must initialize an immutable value only once.

immutable int i = { code code code }();


Andrei

Reply via email to