Actionscript 3 从开关盒返回值时出错?

Actionscript 3 从开关盒返回值时出错?,actionscript-3,return,switch-statement,Actionscript 3,Return,Switch Statement,在AS3中编写自定义事件后,我遇到了一个奇怪的问题: override public function toString():String { switch (type) { case CHANGE: return formatToString("HistoryEvent", "type", "action", "name", "data"); case ABILITY: return forma

在AS3中编写自定义事件后,我遇到了一个奇怪的问题:

override public function toString():String
    {
    switch  (type)
            {
            case CHANGE:    return formatToString("HistoryEvent", "type", "action", "name", "data");
            case ABILITY:   return formatToString("HistoryEvent", "type", "undoable", "redoable");
            }
    }
上述代码返回以下编译时错误:

1170:函数不返回 价值观

我可以通过添加
returnnull轻松解决这个问题在函数的末尾,但这是多余的,而且它似乎是唯一的解决方案,这让我很恼火


为什么编译器看不到从开关案例返回的值?这是AS3编译器特有的问题,还是我在这里真的尝试了一些完全危险和有害的东西,以至于它给全世界的反文化主义者蒙上了阴影

您的开关可能不匹配,在这种情况下,函数无法返回任何内容。这就是编译器抱怨的原因。新增
默认值:返回空到switch语句解决了这个问题,并在函数末尾添加了
returnnull

您必须在switch语句中添加默认块。这样编译器就不会抱怨返回值了。

我也遇到了同样的问题。这是一个很好的解决方案,您的解释帮助我理解了为什么会发生这种情况,谢谢!