Thread overview
if statement.
Oct 22, 2007
Simen Haugen
Oct 22, 2007
Regan Heath
October 22, 2007
From the documentation:

"If an auto Identifier is provided, it is declared and initialized to the value and type of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement.

If a Declarator is provided, it is declared and initialized to the value of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement. "

I can't understand what Declerator is.. I thought it would assign a previously defined variable, but that's not the case.

 if (auto r = true) {
  writefln(r); // OK
 }

 bool r;
 if (r = true) { // Error: '=' does not give a boolean result
  writefln(r);
 }


So... What is it then?


October 22, 2007
Simen Haugen wrote:
> From the documentation:
> 
> "If an auto Identifier is provided, it is declared and initialized to the value and type of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement.
> 
> If a Declarator is provided, it is declared and initialized to the value of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement. "
> 
> I can't understand what Declerator is.. I thought it would assign a previously defined variable, but that's not the case.
> 
>  if (auto r = true) {
>   writefln(r); // OK
>  }
> 
>  bool r;
>  if (r = true) { // Error: '=' does not give a boolean result
>   writefln(r);
>  }
> 
> 
> So... What is it then?

This is a guess, but it compiles so...

if (bool r = true) {
  writefln(r);
}

A declarator would be where you declare a variable, not re-assign.  I guess.

Regan
October 22, 2007
"Simen Haugen" <simen@norstat.no> wrote in message news:ffi0d1$vjp$1@digitalmars.com...
> From the documentation:
>
> "If an auto Identifier is provided, it is declared and initialized to the value and type of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement.
>
> If a Declarator is provided, it is declared and initialized to the value of the Expression. Its scope extends from when it is initialized to the end of the ThenStatement. "
>
> I can't understand what Declerator is.. I thought it would assign a previously defined variable, but that's not the case.
>
> if (auto r = true) {
>  writefln(r); // OK
> }
>
> bool r;
> if (r = true) { // Error: '=' does not give a boolean result
>  writefln(r);
> }
>
>
> So... What is it then?
>
>

The spec for Declarators is given in the Declarations section of the spec. Yes, it's basically a variable declaration.  Hence the name.