Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
July 17, 2011 Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Hi all, First post - I'm learning D, 10yrs exp. with C++. While trying to generate a static table of functions using lambdas compile time using mixins, I ran in to this little (for me) conundrum. Given that we have this function available: static void foo(){ writefln("Hohum"); } This compiles: void function()[] funcext = [&foo]; Whereas this does not: void function()[] funcext2 = [function(){foo();}]; Why? What are the technicalities that prevent me from setting up a lambda during compile-time? It seems to me that the compiler should be able to figure this out. Any insights appreciated. :) Cheers, -r- |
July 17, 2011 Re: Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rolv Seehuus | That would be http://d.puremagic.com/issues/show_bug.cgi?id=2634 "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:ivug6b$o7o$1@digitalmars.com... > Hi all, > > First post - I'm learning D, 10yrs exp. with C++. > > While trying to generate a static table of functions using lambdas compile > time using mixins, I ran in to > this little (for me) conundrum. > > Given that we have this function available: > static void foo(){ > writefln("Hohum"); > } > > This compiles: > void function()[] funcext = [&foo]; > > Whereas this does not: > void function()[] funcext2 = [function(){foo();}]; > > Why? What are the technicalities that prevent me from setting up a lambda > during compile-time? It > seems to me that the compiler should be able to figure this out. > > Any insights appreciated. :) > > Cheers, > -r- |
July 19, 2011 Re: Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Murphy | == Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> That would be http://d.puremagic.com/issues/show_bug.cgi?id=2634
Thanks,
Is there a related/same reason why this don't compile?
unittest {
static void stuff(){}
static void function()[string] functions = [ "stuff":&stuff ];
}
Cheers,
-r-
|
July 20, 2011 Re: Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rolv Seehuus | "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com... > Is there a related/same reason why this don't compile? > > unittest { > static void stuff(){} > static void function()[string] functions = [ "stuff":&stuff ]; > } That compiles for me. |
July 30, 2011 Re: Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Murphy | == Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com...
> > Is there a related/same reason why this don't compile?
> >
> > unittest {
> > static void stuff(){}
> > static void function()[string] functions = [ "stuff":&stuff ];
> > }
> That compiles for me.
Ok - Compiler version/os? I'm on MacOS, compiler outputs the following: DMD32 D Compiler v2.054
-r-
|
July 30, 2011 Re: Scope of lambdas and closures | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rolv Seehuus | == Quote from Rolv Seehuus (rolv.seehuus@gmail.com)'s article
> == Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> > "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com...
> > > Is there a related/same reason why this don't compile?
> > >
> > > unittest {
> > > static void stuff(){}
> > > static void function()[string] functions = [ "stuff":&stuff ];
> > > }
> > That compiles for me.
Doh, never mind.
Sorry for wasting your time.
Cheers,
-r-
|
Copyright © 1999-2021 by the D Language Foundation