delegates vs functions => practical consequences

Ali Çehreli acehreli at yahoo.com
Wed Apr 18 15:57:00 PDT 2012


On 04/18/2012 03:50 PM, Mirko Pilger wrote:
 >> I want to know what is most interesting for me: delegates or functions.
 >> I consulted sources but none say the practical consequences of such
 >> election.
 >
 > in addition to what john said: regarding _function literals_ the
 > difference is by using a delegate instead of a function you have access
 > to the enclosing frame, e.g. variables in the same scope.
 >
 > the following code doesn't compile with the error "[...] cannot access
 > frame of [...]":
 >
 > int y;
 > auto fn= function(int x) {return x+y;};
 >
 > if you change this to:
 >
 > int y;
 > auto fn= delegate(int x) {return x+y;};
 >
 > it compiles without error.

Additionally, thanks to a recent bug fix, omitting 'function' and 
'delegate' will deduce the right one. Both of the following are 
delegates because they access the variable 'y' from the enclosing scope:

     auto fn_1 = (int x) {return x+y;};

     auto fn_2 = (int x) => x + y;

The latter syntax doesn't help much in this context but still...

Ali



More information about the Digitalmars-d-learn mailing list