| Thread overview | |||||
|---|---|---|---|---|---|
|
November 23, 2012 Can functions add properties? | ||||
|---|---|---|---|---|
| ||||
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);
I've never seen any documentation about this behaviour. I think it's a good feature, but I'm a bit confused.
| ||||
November 23, 2012 Re: Can functions add properties? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Jun | 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. | |||
November 23, 2012 Re: Can functions add properties? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Jun | On Friday, 23 November 2012 at 14:08:05 UTC, Jun wrote: > I've never seen any documentation about this behaviour. I think it's a good feature, but I'm a bit confused. More info here http://www.drdobbs.com/cpp/uniform-function-call-syntax/232700394 UFCS is relatively new and has not been included in the language documentation yet. It was added to the language only a few months ago with the dmd 2.059 release. IMO it should be in the docs by now, and I think that's a problem area being worked (I hope). --rt | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply