【发布时间】:2010-05-15 14:21:48
【问题描述】:
有什么方法可以递归地从另一个 lambda 返回 lambda?
我想做的只是有限状态机,实现为 lambda,它返回实现另一个状态(或 null)的 lambda。
嵌套函数无法按我的意愿工作。
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();
}
}
我知道,例如,我可以使用 enum+switch 解决此问题,但我只是好奇是否可以这样做。
【问题讨论】:
-
我对这个问题的“递归”属性感到困惑;你能举一个这种行为的例子吗? lambda 实际上应该返回 自身 吗?
-
目前还不清楚您希望它如何工作。能否给个伪代码示例,或者详细解释一下?
-
我对更新感到困惑。此代码中的任何地方都没有 lambda 表达式。 “lambda”这个词到底是什么意思?我的意思是一个 lambda 表达式。
-
我想通了。当您说“lambda”时,您的意思是“代表”。我已经更新了我的答案。
-
这是个好主意,但最好使用函数式语言。