2009-06-09 9 views
2

長さ0を返しませんか?関数bbのように、渡されたaArgを非空/非nullとして扱います。AS3 ...(rest)パラメータ

私はここで何が欠けていますか?

何か助けていただければ幸いです。 について..

答えて

9

bb()関数に行くaArgsは空の配列になりますが、配列はそれほど少なくありません...出力が期待されると思います。私は少しを明確にしたかった

:アップデート1

...所望の出力を得るためにかかわらず、私は違っそれをフォーマットする方法をけれども私は本当にわかりません。あなたが持っているものは、基本的には次のようなものです:

function aa(...aArgs):void 
{ 
    myArray:Array = aArgs; 
    bb(myArray); 
} 
function bb(...bArgs):void 
{ 
    trace("bb:", bArgs.length); 
} 
aa(); //calling aa without any arguments. 

このコードを見れば、あなたはbb:1でしょうか?

アップデート2:

このスレッド:filling in (...rest) parameters with an array?それは、関連するだろうかのように見えます。 apply()関数を使用して配列をパラメータリストとして渡します。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply()

+0

です。ありがとう。 この例では、aa関数のbb.apply(null、args)を呼び出すことは確実です。 (私は15人の担当者がいればあなたの答えを投票するだろう) しかし、実際には、私は変数にargを渡そうとしています。 など: function aa(... args){someVariable = args; } と私は後でその変数をbb(... args)のように使う:bb(someVariable); - それは動作しません.. –

+0

それはまだ適用と動作するはずです。 somveVariableは配列なので、配列内の個々の項目を渡すためにapply()が必要になることを覚えておいてください。 –

+0

いいえそれは.. スレッドを参照してくださいhttp://stackoverflow.com/questions/972460/as3-arguments 私はここにコードを追加することはできませんので、私は新しい質問をする必要がありました.. –

2

これは理にかなっており、正しく動作します。 ... restは常に配列を作成し、渡された値がない場合は空の配列を作成します。長さをトレースするとわかります。だから、bbが... rest配列に1つのオブジェクトを持つ理由は、空の配列をbbに値として渡していることです。これはbbの... restによって生成される配列の最初の位置に挿入されます。 1の長さ。

+0

はい私は上記のすべてに同意します。しかしそれは単に問題の性質を記述しているだけで、私たちに適切な解決法を提供していない。私は関数のオーバーフローとそのパラメータをそのまま維持する必要があります(このコードは複雑なクラスの単純なバージョンなので)。とにかく、私はあなたの助けを借りてソリューションを考え出しました。あなたはそれをここで見つけることができます:http://stackoverflow.com/questions/972460/as3-argumentsそれは難しい/異なるアプローチと思われないかもしれませんが、それは私が必要とするものです。 –

6

は、これはまだ関連性があるかどうかを知りませんが、あなたはこれを試みることができる:

function aa(...aArgs):void { 
    var myArray:Array = aArgs; 
    bb.apply(this, myArray); 
} 
function bb(...bArgs):void { 
    trace("bb:", bArgs.length); 
} 
aa(); //calling aa without any arguments. 

は基本的にFunction.applyがここにあなたの友達です。

+0

ありがとうございました。ここで解決された質問:http://stackoverflow.com/questions/972460/as3-arguments/972518#972518 –

関連する問題