1

ここに簡単なコードがあります:

var a:Array = new Array( ins0, ins1, ins2, ins3,...., ins10000) ;
findIns( ins1500) ;

function findIns( ins:SomeInstance ) {  
    for ( var i = 0 ; i< a.length ; i++)  {
        if ( a[i] == ins ) {
            trace ( "FOUND IT");
            break; 
        }
    }
}

上記のコードには、「int」または「string」はありません。それらはいくつかの複雑なクラスのインスタンスです。したがって、この場合、配列の代わりにベクトルを使用するのが賢明です。

私の意見では、インスタンスは結局のところ「数値メモリ位置」であるため、それは賢明なはずです。

4

2 に答える 2

1

配列のコンテンツがすべて同じクラスのインスタンスである場合、yesVectorは間違いなく。よりもパフォーマンスが高くなりArrayます。

詳細については、ドキュメントを参照してください。

  • パフォーマンス:配列要素のアクセスと反復は、配列を使用する場合よりもベクターインスタンスを使用する場合の方がはるかに高速です。

  • 型安全性:厳密モードでは、コンパイラーはデータ型エラーを識別できます。データ型エラーの例には、ベクターに誤ったデータ型の値を割り当てることや、ベクターから値を読み取るときに誤ったデータ型を予期することが含まれます。ただし、push()メソッドまたはunshift()メソッドを使用してVectorに値を追加する場合、コンパイル時に引数のデータ型はチェックされないことに注意してください。代わりに、実行時にチェックされます。

  • 信頼性:実行時範囲チェック(または固定長チェック)により、アレイよりも信頼性が大幅に向上します。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Vector.html

于 2013-01-14T08:43:37.023 に答える
1

はい、その通りです。ベクトル内に格納されるのは、オブジェクト自体ではなく、オブジェクトへの参照です。次のことを行うことで確認できます。

var ref:yourType = a[0];
a[0] = someOtherObjectInstance;
trace(ref.toString());

refそれでも元のオブジェクトを指していることがわかります。

于 2013-01-14T08:59:54.910 に答える