digitalmars.D.learn - anonymous function/deleget usage
- Sam Hu <samhu.samhu nospam.com> Nov 12 2009
- Don <nospam nospam.com> Nov 12 2009
- "Steven Schveighoffer" <schveiguy yahoo.com> Nov 12 2009
- bearophile <bearophileHUGS lycos.com> Nov 12 2009
- Ary Borenszweig <ary esperanto.org.ar> Nov 12 2009
- Sam Hu <samhu.samhu nospam.com> Nov 12 2009
- BCS <none anon.com> Nov 12 2009
- Sam Hu <samhu.samhu nospam.com> Nov 12 2009
How can I reach something like below code:
int a=1;
int b=2;
int c=(int a,int b){
return a+b;}
writefln("Result:%d",c);
Thanks in advance.
Nov 12 2009
Sam Hu wrote:How can I reach something like below code: int a=1; int b=2; int c=(int a,int b){ return a+b;} writefln("Result:%d",c); Thanks in advance.
You need to call the delegate you've made. int a=1; int b=2; int c=(int a,int b){ return a+b;}(a,b); writefln("Result:%d",c);}
Nov 12 2009
On Thu, 12 Nov 2009 10:21:44 -0500, Don <nospam nospam.com> wrote:Sam Hu wrote:How can I reach something like below code: int a=1; int b=2; int c=(int a,int b){ return a+b;} writefln("Result:%d",c); Thanks in advance.
You need to call the delegate you've made. int a=1; int b=2; int c=(int a,int b){ return a+b;}(a,b); writefln("Result:%d",c);}
Also, don't forget you can refer to variables in the enclosing function: int c = (){return a + b;}(); -Steve
Nov 12 2009
Steven Schveighoffer:int c = (){return a + b;}();
You can also write: int c = {return a + b;}(); Bye, bearophile
Nov 12 2009
bearophile wrote:Steven Schveighoffer:int c = (){return a + b;}();
You can also write: int c = {return a + b;}(); Bye, bearophile
Shorter: int c = a + b;
Nov 12 2009
Don Wrote:You need to call the delegate you've made.
I missed this key point. So to summary: int a=1; int b=2; 1.nested function; 2.int c=(int a,int b){return a+b;}(a,b); 3.int c=(int,int){return a+b;}(a,b); 4.int c=(){return a+b;}(); 5.int c={return a+b;}(); How come the last one is legal? Thank you all for all your help!
Nov 12 2009
Hello Sam,Don Wrote:You need to call the delegate you've made.
So to summary: int a=1; int b=2; 1.nested function; 2.int c=(int a,int b){return a+b;}(a,b); 3.int c=(int,int){return a+b;}(a,b); 4.int c=(){return a+b;}(); 5.int c={return a+b;}(); How come the last one is legal?
If the function has no args the first () can be dropped. If the return type can be inferred, that can be dropped. Nested functions can access vars in the outer function.Thank you all for all your help!
Nov 12 2009
BCS Wrote:If the function has no args the first () can be dropped. If the return type can be inferred, that can be dropped. Nested functions can access vars in the outer function.
Got it.Thanks a lot!
Nov 12 2009









Ary Borenszweig <ary esperanto.org.ar> 