class instance construction

Steven Schveighoffer schveiguy at yahoo.com
Thu Nov 11 09:13:39 PST 2010


On Thu, 11 Nov 2010 12:10:42 -0500, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> On Thu, 11 Nov 2010 11:57:40 -0500, Daniel Gibson  
> <metalcaedes at gmail.com> wrote:
>
>> spir schrieb:
>>> Still, an other case when "new" annoys me is method chaining, because  
>>> it makes syntax heavier and less readable:
>>> 	c = (new C(p)).do(x);
>>> versus:
>>> 	c = C(p).do(x);
>>> Or, maybe, the parser could be clever enough to correctly decode:
>>> 	c = new C(p).do(x);
>>>
>>
>> Is this really a common case?
>> Constructing an object, just to call *one* method on it and then throw  
>> it away?
>
> If the do method returns this, you aren't throwing it away.

A realistic example (from dcollections):

auto ll = (new LinkedList(someOtherCollection)).sort();

http://www.dsource.org/projects/dcollections/browser/branches/d2/dcollections/LinkList.d#L1054

That being said, I'm really ambivalent on whether this needs to be  
included.  It's not that terrible that you have to parenthesize properly.

-Steve


More information about the Digitalmars-d mailing list