2011-01-24 8 views
1

関数を*に戻すにはどうすれば関数が何かを返すことができ、それに応じて型変換することができますか?actionscriptで何かを返す関数を作成するには

この関数では、この関数はtilelistとdataagridの両方を変更する必要があるとします。

Plz教えて ありがとう。

答えて

11

この機能では仮定、私はこの 機能を変更すべきか (場合による)TileListのと データグリッドの両方を返すようにしたいです。

この場合、ListとDataGridの両方の親クラスであるListBaseを返す必要があります。

オブジェクトを返すことができるようにするには、戻り値の型をObjectと指定できます。

整数のようなプリミティブ値を含めて本当に何かを返す場合は、別の答えに記載されているように*を使用できます。これが本当に必要なものなら、私の直感はあなたのアプリケーションをリファクタリングする必要があるかもしれないということです。

+1

+1はい、私はそれに同意します。非常に頻繁に(ただし必ずしもそうではありません)、*は警官です...特にあなたがそれが2つのタイプのうちの1つにしかならないことを知っているならば。私は 'ListBase'を使うのが好きです。あなたが本当に何かを返すことができるとき*を返すことは素晴らしいです。私たちがAS3でジェネリック医薬品を手に入れることができれば、大部分のリターンは代わりにジェネリック医薬品となるでしょう。 –

8

戻り値の型を定義する必要はありません。

private function get_current_files_view() { } 

それとも、あなたは、可能性があり、それが何かを返す必要があること、それを定義しますが、何も

private function get_current_files_view():* { } 

またはことができます。そうしないと、あなたは何か何も(推奨されません)を返すことができます

これは役立ちますか?具体的にするには、インターフェイスまたは基本クラスを使用してください。あるいは私はあなたの質問を完全に誤解していますか?

+0

+1は、インターフェイスを使用するための提案です。私はそれがreturn型として*を持つよりはるかに優れた開発アプローチだと考えています。 – JeffryHouser

+5

厳密なモードのFlexコンパイラは、戻り値のないメソッドを受け付けません。戻り型を常に定義することがベストプラクティスです。 –

+1

@TandemAdam:合意。私は特に私のルーチンを関数(何かを返す... *、型、オブジェクトなど)または手続き(voidを返す)として定義するのが好きです。呼び出し側が返品を期待するかどうかは明らかです。その提案を追加するために私の回答を編集します。私の変数は静的な型定義と動的な型定義に混在しています。しかし、関数では何かを指定する必要があります。 –

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; 
    } 
+1

文書化されていない 'constructor'プロパティではなく' is'を使うのが常に良いです。サブクラスもキャッチします。 –

+2

コンストラクタが文書化されています:http://help.adobe.com/jp/FlashPlatform/reference/actionscript/3/Object.html#constructor – TheDarkIn1978

関連する問題