On 2013-11-25 23:32:25 +0000, Chris Williams said:
Is there any way to do something like this?
import std.stdio;
enum Foo : void function() {
WOMBAT = () {writeln("Wombat");}
}
void doStuff(Foo f) {
f();
}
int main() {
doStuff( Foo.WOMBAT );
return 0;
}
Currently, I get the errors:
hello.d(4): Error: non-constant nested delegate literal expression __lambda1
hello.d(12): Error: delegate hello.Foo.__lambda1 is a nested function
and cannot be accessed from D main
I can fix it by declaring a function outside of Foo and setting WOMBAT
= &fname, but it seems like I should be able to create a hidden lambda.
What is the practical purpose of such a thing?
-Shammah