编程语言 – 哪种编程语言支持语言级别的状态?

UnrealScript总是给我留下深刻的印象,它通过将函数和字段分组/重载为块来实现对状态(和潜在函数)的内在支持,例如:

state() SomeState
{
    ...
    function void Foo()
    {
        GotoState('SomeOtherState');
    }
    ...
}

这比在每个函数中使用大量switch-statements(它几乎是某种design by contract)要清晰得多.

是否还有其他更通用的编程语言本质上支持与此类似的状态声明(忽略可视化编程语言或Workflow Foundation等工具)?

编辑:

UnrealScript中状态的一些优点是你可以在子类中覆盖有状态函数,甚至可以定义新的命名状态.我认为这对于enum-switch(枚举不能扩展),委托或实现不同状态的共同类很麻烦,特别是在只支持单继承的C#或Java等语言中.

最佳答案
任何面向对象的编程语言都可以让您轻松创建状态机.但你可能想看看QT,它是http://labs.trolltech.com/blogs/2009/01/30/qt-state-machine-framework/.我还没试过.

我喜欢语言,这使我能够创建各种支持结构的语言,为我提供特殊功能,适用于各种特殊情况. QT中显示的C就是一个很好的例子.

转载注明原文:编程语言 – 哪种编程语言支持语言级别的状态? - 代码日志