Type helpers instead of UFCS

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Sun Sep 13 12:07:22 PDT 2015


On Sunday, 13 September 2015 at 17:23:25 UTC, BBasile wrote:
> On Sunday, 13 September 2015 at 17:17:18 UTC, bitwise wrote:
>> On Saturday, 12 September 2015 at 20:37:37 UTC, BBasile wrote:
>>> [...]
>>
>> By this do you mean completion will be flooded?
>>
>> If so, then +1.
>>
>> I would much prefer something like C# extension methods, but 
>> where the first argument has to be typed so that every random 
>> template UFC under the sun doesn't appear in completion.
>>
>>     class Foo {
>>        void foo() {}
>>     }
>>
>>     void bar(this Foo foo, int arg) { }    // fine
>>     void baz<T>(this T t) { }    // compile error: first arg 
>> can't be a template
>>     void boo(Foo foo)   // fine, but can't be used like a UFC
>>
>>     int Main(string[] args) {
>>         Foo foo = new Foo();
>>         foo.bar(1); // fine
>>         foo.baz(); // error, undefined method 'baz'
>>         boo(foo); // fine
>>         foo.boo(); // error, undefined method 'boo'
>>     }
>
> Yes this exactly what I meant. But a few hours after starting 
> the topic i'm less excited about the feature. I was biased by 
> the fact that i uniquely use DCD while there is of course also 
> A.Bothe completion system and the default Visual D completion 
> (don't know if it's been droped since the last time i used VD 
> but there was setting to use Bothe's completion system in stead 
> of VD's one).

Yea, I think this is one of those things that's just way to 
engrained in D to be changed.

T* obj = cast(T*)malloc(sz);
emplace(obj);
obj.destroy();  // <---- this

If things like this stopped working, I doubt if there's a D 
codebase in existence that wouldn't break =/

    Bit




More information about the Digitalmars-d mailing list