2011-01-19 45 views
3

編碼在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: Function does not return a value.

我可以很容易地解決這個問題在函數的末尾添加return null;,但這是多餘的,它使我感到困擾,它似乎是唯一的解決方案。

爲什麼從編譯器看不到的開關情況下返回一個值?這是一個特定於AS3編譯器的問題,還是我在這裏嘗試的東西是,所以完全危險並且不利於它影響世界各地的反科學家。

回答

3

您的開關可能不匹配,在這種情況下,函數不能返回任何東西。這就是編譯器抱怨的原因。在您的switch語句中添加default: return null;可以解決該問題,並在函數結束時添加return null

+1

啊,當然!好的,現在有道理。謝謝。 – TheDarkIn1978 2011-01-19 11:29:14

0

你必須添加默認塊到你的switch語句中。然後編譯器不會報錯返回值