digitalmars.D.learn - Can functions add properties?
- Jun (14/14) Nov 23 2012 I found some codes write
- Mike Parker (7/21) Nov 23 2012 FYI, you could even do this:
- Rob T (9/11) Nov 23 2012 More info here
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.
Nov 23 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.
Nov 23 2012
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
Nov 23 2012