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