Enum of functions?

Shammah Chancellor anonymous at coward.com
Mon Nov 25 21:13:00 PST 2013


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



More information about the Digitalmars-d-learn mailing list