在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:功能不返回a 值。
我可以通过在函数末尾添加return null;
来轻松解决问题,但这是多余的,让我觉得它似乎是唯一的解决方案。
为什么从编译器看不到的switch case返回一个值?这是一个特定于AS3编译器的问题,或者我实际上在这里尝试的东西是所以完全危险和不利于它影响全世界的反文化家。
答案 0 :(得分:3)
您的开关可能不匹配,在这种情况下,该功能无法返回任何内容。这就是编译器抱怨的原因。将default: return null;
添加到switch语句可以解决问题,并在函数末尾添加return null
。
答案 1 :(得分:0)
您必须在switch语句中添加默认块。然后编译器不会抱怨返回值