UFCS confusion

Michael michael at toohuman.io
Fri Jul 13 11:12:47 UTC 2018


On Friday, 13 July 2018 at 10:52:54 UTC, Radu wrote:
> On Friday, 13 July 2018 at 10:21:54 UTC, Michael wrote:
>> Hello,
>>
>> I am nesting some function calls, and I'm pretty used to 
>> making use of D's Uniform Function Call Syntax, but I'm 
>> getting an error if I try to convert this line:
>>
>>> createSet(createVector(langSize, index)).length;
>>
>> which works, into this line:
>>
>>> createVector(langSize, index).createSet.length;
>>
>> receiving the error "Error: no property createSet for type 
>> int[]", when the signature for createSet is:
>>
>>> static auto createSet(in int[] vector) pure
>>
>> What am I missing here? I'm sure it's stupidly obvious but it 
>> expects one argument, so I'm just calling it without 
>> parentheses.
>
> Do you try to call member functions? UFCS only works with free 
> functions, meaning declared at module level.
>
> https://dlang.org/spec/function.html#pseudo-member

I'm not intentionally trying to call member functions, no. The 
functions are all static functions of a class, but the chaining 
of them using UFCS doesn't seem to work.


More information about the Digitalmars-d-learn mailing list