Does D have too many features?

Timon Gehr timon.gehr at gmx.ch
Sun Apr 29 14:50:29 PDT 2012


On 04/29/2012 10:03 PM, Alex Rønne Petersen wrote:
> On 28-04-2012 23:41, Timon Gehr wrote:
>>
>> As I understand it, the 'agreed upon' design is that
>>
>> @property int foo() { return x; }
>> @property void foo(int v) { x = v; }
>>
>> Would be completely equivalent to C#:
>>
>> int foo { set{ x = value; }; get{ return x; } }
>
> Nope.
>
> First of all, you'd have to declare the setter like this in D:
>
> @property int foo(int v) { return x = v; }
>
> so that you can write:
>
> int v = obj.foo = 1; // valid C#
>
> Next up is the issue of op-assign operations. In D, you can't do:
>
> obj.foo += 1;
> obj.foo++;
>
> while in C#, you can (it results in a get -> add 1 -> set and get -> inc
> -> set, etc).
>

I didn't say this was how it worked in the current compiler 
implementation. But I may be wrong on what is the design because I 
didn't take part in that discussion.

Notably, read-update operations now work on the built-in length property 
of arrays. I don't think there is any justification for not implementing 
this for properties.


More information about the Digitalmars-d mailing list