Can functions add properties?

Mike Parker aldacron at gmail.com
Fri Nov 23 07:06:49 PST 2012


On Friday, 23 November 2012 at 14:08:05 UTC, Jun wrote:
> I found some codes write
>
> toStringz(myString)
>
> as
>
> mystring.toStringz
>
> So I tested this code myself and it worked.
>
> int pow2(int i)
> {
>     return i*i;
> }
> int myint = 5;
> int otherint = myint.pow2;
> assert(otherint == 25);


FYI, you could even do this:

int otherint = 5.pow2;


>
> I've never seen any documentation about this behaviour. I think 
> it's a good feature, but I'm a bit confused.


It's called Universal Function Call Syntax (UFCS). The compiler 
essentially rewrites something.function to function(something), 
unless "something" is a struct or class with a method named 
"function", in which case it calls the method instead.



More information about the Digitalmars-d-learn mailing list