UnrealScript 一直以来都给我留下了深刻的印象,它通过将函数和字段分组/重载成块的方式来支持状态(和潜在函数),这点非常优秀:
state() SomeState
{
...
function void Foo()
{
GotoState('SomeOtherState');
}
...
}
这比在每个函数中使用大量的switch语句要清晰得多(这几乎是一种按合同设计)。
是否有其他更通用的编程语言,支持类似于此的状态声明(忽略视觉编程语言或Workflow Foundation之类的工具)?
编辑:
UnrealScript中状态的一些优美之处在于您可以在子类中覆盖有状态的函数,甚至定义新的命名状态。我认为使用枚举开关(其中枚举无法扩展)、委托或实现不同状态的协同类,在C#或Java等仅支持单重继承的语言中进行此操作会很麻烦。