有什么办法可以递归地从另一个lambda返回lambda吗?
所有我想做的是有限状态机,实现为lambda,它返回lambda实现另一个状态(或null).
嵌套Func<>不会像我想要的那样工作.
C#,.NET 3.5
例:
机器,3个州,伪语言
private Lambda State1() { if (SomeConditionIsMet) return State2; else return State1; } private Lambda State2() { while (SomeConditionIsMet) return State2; else return State3; } private Lambda State3() { LogEnd(); return NULL; } public void FSM() { Lambda _currentState = State1; while(_currentState != NULL) { _currentState = _currentState(); } }
我知道,我可以解决这个使用枚举开关,例如,但我只是好奇,如果我可以做到这一点.
解决方法
我相信你可以声明一个委托类型:public delegate Lambda Lambda()返回一个自己的类型的委托.无论如何,它编译.