2011-01-24 92 views
1

如何做一個函數返回*,明星,我的意思是該函數能夠返回任何東西,然後我可以相應地說明它?如何創建一個函數,可以返回任何動作

private function get_current_files_view():TileList 
    { 
     var tlist:TileList; 
     //switch(this[fm_model.files_display_type]) 
     switch(vs_file_display.selectedChild) 
     { 
      case cvs_user_files:  
       tlist = tlist_files; 
       break; 

      case bx_shared_data:      
       tlist = tlist_shared_with_me; 
       break; 
      default:  
       throw new Error('Invalid container found'); 
     } 
     return tlist; 
    } 

假設在此功能,我想這個函數返回二者的TileList和DataGrid(根據情況)什麼應該被改變。

Plz讓我知道 謝謝你。

回答

11

假設在此功能,我想這 函數返回二者的TileList和 數據網格(根據情況)什麼 應該改變。

如果是這樣的話,那麼您應該返回ListBase,它是List和DataGrid的父類。

我想要能夠返回任何對象,您可以指定返回類型爲Object

如果你真的想返回任何東西,包括整數等你可以使用*的整數,正如在另一個答案中所述。如果這真的是你需要的,我的直覺就是你可能需要重構你的應用程序。

8

您不需要定義返回類型。如果不這樣做,那麼你可以返回任何東西,或沒有(不推薦):

private function get_current_files_view() { } 

或者,你可以定義它,它必須返回的東西,但任何

private function get_current_files_view():* { } 

或者,你可以如果您想具體說明,請始終使用接口或基類:

private function get_current_files_view():ISomeInterface {} 

這對您有幫助嗎?或者我完全誤解你的問題?

+0

對於建議使用接口+1。我認爲這是一個比*具有更好的開發方式作爲返回類型。 – JeffryHouser 2011-01-24 19:50:42

+5

嚴格模式下的Flex編譯器不會接受沒有返回類型的方法。總是定義一個返回類型是最佳實踐。 – 2011-01-24 20:06:01

+1

@TandemAdam:同意。我喜歡專門定義我的例程作爲函數(返回某些... *,類型,對象等)或過程(返回void)。調用者很清楚是否期望收益。我將編輯我的回覆以添加該建議。然而,我的變量,我很高興混合靜態類型和動態類型。然而,在函數中,我們應該指定一些東西。 – 2011-01-24 20:47:04

2
private function whatsMyObject:(parameter:*):* 
    { 
    switch (parameter.constructor) 
      { 
      case TileList:  trace("parameter is TileList"); 
           break; 

      case DataGrid:  trace("parameter is DataGrid"); 
           break; 

      default:   trace("parameter is neither TileList nor DataGrid"); 
      } 

    return parameter; 
    } 
相關問題