auto

Bill Baxter dnewsgroup at billbaxter.com
Thu Jun 21 19:16:21 PDT 2007


Derek Parnell wrote:
> On Wed, 20 Jun 2007 21:37:44 -0200, Ary Manzana wrote:
> 
>> Derek Parnell escribió:
>>> On Wed, 20 Jun 2007 14:20:43 +0200, Hoenir wrote:
>>>
>>>> I still can't get the purpose of "auto".
>>>> I know it makes it possible to e.g. write "auto y = 4u;" but why not 
>>>> just "uint y = 4;"?
>>>    auto y = someFunc();   // What type is it now?
>>>
>> // What can you do with y now, if you don't know the type?
> 
> Pass it to a function that does know its type.
> 

I *think* the point was just that the code becomes less readable without 
any obvious indication of what type you've got.  Sure you can do all the 
same things you could do it the type were explicit, but someone else 
asked to fix this code is going to have to track down "someFunc()" to 
see what it returns.

Lacking any particular extenuating circumstances, I agree that that 
making types explicit is better than using auto.  But auto makes sense when
1) the actual type is a built-in (auto x = foo.length)
2) the actual type is obvious (auto x = new MyClass())
3) the actual type is huge/untypeable like
    ( Node!(Node!(Node!(Expr!(Terminal!(1),Terminal!(2))))) x = expr!();
4) the actual type is unknowable (some template usages)

or

5) when you're in a real hurry and don't have time to figure out what 
the actual type is.  :-)

--bb


More information about the Digitalmars-d-learn mailing list