2011-03-10 8 views
3

私の質問この質問のフレックス転置さ:パス引数

あるCan I pass an array as arguments to a method with variable arguments in Java?

、私はいくつかのActionScriptコードで配列を持っています配列にインデックスされたすべてのオブジェクトをメソッドmethod(...arguments)に渡す必要があります。

それを明確にするいくつかのコード:

private function mainMethod():void{ 
    var myArray:Array = new Array("1", "2", "3"); 
    // Call calledMethod and give it "1", "2" and "3" as arguments 
} 

private function calledMethod(...arguments):void{ 
    for each (argument:Object in arguments) 
     trace(argument); 
} 

コメントが示唆して何をすべきか、いくつかの方法はありますか?

答えて

10

Functionオブジェクト自体を調べることで可能です。それが動作するには()を呼び出す適用されます:

private function mainMethod():void 
{ 
    var myArray:Array = new Array("1", "2", "3"); 

    // call calledMethod() and pass each object in myArray individually 
    // and not as an array 
    calledMethod.apply(this, myArray); 
} 

private function calledMethod(... args):void 
{ 
    trace(args.length); // traces 3 
} 

詳細情報については、http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Function.html#apply()

+0

これは完璧です、ありがとう! – Dunaril

+0

美しい!私は数日前にこの厳しい問題を抱えていました。 –

1

コンパイラが望むものを推測するのは難しいですが、Array型の1つの引数を渡したいのですか、その配列の要素を渡したいと思いますか?コンパイラは、仮定1のために行く。

+0

はこれを回避する方法はありませんか? – Dunaril

0

...引数をチェックアウトすると、メソッドがために待っ1つのオブジェクトです。複数の要素または(この場合は)1つの配列をパラメータとともに渡すことができます。

例:

function mainMethod():void 
{ 
    //Passing parameters as one object 
    calledMethod([1, 2, 3]); 

    //Passing parameters separately 
    calledMethod(1, 2, 3); 
} 

function calledMethod(...args):void 
{ 
    for each (var argument in args) 
    { 
     trace(argument); 
    } 
} 

mainMethod(); 

はそれが役に立てば幸い、 ロブ

+0

申し訳ありませんが、役に立たないです。私の質問は、具体的には、配列に含まれるオブジェクトをそのようなメソッドに渡す問題を解決します。つまり、これらのオブジェクトをメソッド呼び出しで明示することはできません。 – Dunaril

+0

私の悪い、申し訳ありません:) – robertp