Suggestion: shortcut for 'new X' #2

Derek Parnell derek at psyc.ward
Tue Sep 5 16:38:47 PDT 2006


On Tue, 05 Sep 2006 20:35:13 +0200, Ivan Senji wrote:

> Kristian wrote:
>> 
>> Ok, I think my previous suggestion for an optional shortcut was a bit 
>> too strange... For example:
>> 
>> Foo f = new Foo;
>> Bar b = new Bar(10);
>> 
>> <->
>> 
>> Foo f = new;
>> Bar b = new(10);
>> 
>> Now there has been a proposal of the following (I use 'local' keyword 
>> here):
>> 
>> Foo f1 = local Foo;  //stack/RAII
>> Foo f2 = new Foo;    //heap
>> 
>> I like the syntax also.
>> 
>> How about if you could *alternately* write:
>> 
>> local Foo f1;
>> new Foo f2;
>> 
>> This would take care of the redundant class name in the declarations.
>> 
>> (I just hate redundance! ;) Writing class names twice is frustrating; 
>> there is a pattern of "X ... X".)
>> 
>> Constructor parameters are put after variable names:
>> 
>> local Bar b(10);
>> new Bar b(10, true);
>> 
>> If this (or something similar) is not possible, a lot of people 
>> (including me) could end writing auto typed declarations. For example 
>> (auto here means auto type, not RAII):
>> 
>> auto f = new Foo;
>> auto b = new Bar(10);
> 
> And I still don't see what is so terribly awful about that?
> 
>> 
>> That could be shortened to:
>> 
>> f = new Foo;
>> b = new Bar(10);
>> 
>> Which leads to my suggestion:
>> 
>> new Foo f;
>> new Bar b(10);
> 
> Hmm, that looks a little to strange to me. It looks more like an 
> expression than a declaration.

The suggestion looks good to me. I see the same form ...

 static int a;
 new    Foo b;

so to generalize ...

DATADECLARATION ::   [STORAGECLASS] TYPE IDENTIFIER [ARGUMENTS]


         int   a;
  new    Foo   b;
  local  Bar   c;
  static float e;
  
-- 
Derek Parnell
Melbourne, Australia
"Down with mediocrity!"



More information about the Digitalmars-d mailing list