On Thursday, 4 October 2012 at 21:32:34 UTC, Jonathan M Davis
wrote:
If you want to restrict the scope of a variable, you can simply
use another set of braces to create a new scope. It might be
more verbose than desirable, but it works just fine. e.g.
{
int n = getInt();
if(n > 10)
{
...
}
}
But if there are else-if clauses, then you end up polluting your
namespace, and notice how the syntax of your workaround
deteriorates exponentially:
The extended if-clause syntax:
------------------------------
if (byte n = fun1(), n > 10)
{
//...
}
else if (int n = fun2(), n > 100)
{
//...
}
else if (ulong n = fun3(), n > 1000)
{
//...
}
The workaround syntax:
----------------------
{
byte n1 = fun1();
if (n1 > 10)
{
//...
}
else
{
int n2 = fun2();
if (n2 > 100)
{
//...
}
else
{
ulong n3 = fun3();
if (n3 > 1000)
{
//...
}
}
}
}
As it stands, there's a good chance that the comma operator is
actually going to be _removed_ from the language (aside from
specific use cases such as inside for loops). So, I don't think
that there's much chance of it being expanded at all.
I don't see a problem there. I mean, if the comma operator is
kept in specific cases like inside for loop, why not keep (and
expand it's use) it in this specific case of if-clause.