どのようにクラス内部のループの配列要素を参照するには?

初心者の質問はここです:私はFlash Builder 4.5のActionscriptプロジェクトで作業しています。私は以下のクラスを作成しました:

package 
{
    public class ComplexNumber
    {
        public var real:Number; //real component
        public var imag:Number; //imaginary component
    }
} 

そして、

package 
{
    public class ComplexArray
    {
        public var real:Array; //real component array
        public var imag:Array; //imaginary component array
    }
}

静的関数:

package 
{
    public class ComplexDivide
    {
        public static function v1p0(a:Number, b:Number,//numerator: a+bi
                                    c:Number, d:Number //denominator: c+di
                                    ):ComplexNumber
        {
            var z:ComplexNumber = new ComplexNumber();  
            var divisor:Number = c*c + d*d;

            z.real = (a*c + b*d)/divisor;//real component
            z.imag = (b*c - a*d)/divisor;//imaginary component          

            return z;
        }
    }
}

別の.asファイルでこの関数を呼び出そうとしています

var BXFN_complex:ComplexArray = new ComplexArray();
for (var ii:int = 0; ii <= 2; ii++) {
    BXFN_complex[ii] = ComplexDivide.v1p0( 1, 0, 2, 3 );
}

このループ内のコードは、次の実行時エラーを生成します。 "ReferenceError:Error#1056:ComplexArrayでプロパティ0を作成できません。"したがって、私のコード "BXFN_complex [ii] =〜"は間違っています。誰でも私がやろうとしていることを達成する方法を知っていますか?基本的には、ComplexDivide.v1p0は2つの数値を返します.BXFN_complexは2つの数値配列を含むオブジェクトで、BXFN_complexの配列のii番目の要素に2つの数値を割り当てたいとします。

1

1 答え

私はあなたが達成しようとしていることを理解しているとは思えません。率直に言えば、あなたのコードは読みにくいですが、エラーの原因は簡単です。

あなたのComplexArrayインスタンスは、Arrayのようには動作しません。これは、2つのメンバー配列realとimagを持つオブジェクトであり、あなたが実際に扱っているものを指定する必要があります:

BXFN_complex.real[ii] 

または

BXFN_complex.imag[ii] 

ちょうど

BXFN_complex[ii] 

ComplexNumber型だけを渡したい場合は、関数を使ってそれを行うことができます:

(on ComplexArray):

public function setItemAt (index:int, n:ComplexNumber) : void {
    real[index] = n.real;
    imag[index] = n.imag;
}

アイテムを追加する前に、実際の配列とimag配列を初期化することを忘れないでください!

最後に、なぜプリミティブなNumber値の2つの配列を保持するComplexArrayではなく、ComplexNumbersを保持するプリミティブ配列を使用しないのか分からないので、単に BXFN_complex [ii] 以前と同じように。

2
追加された
Weltraumpiratありがとうございます、私はあなたの最後の提案を取りました。
追加された 著者 ggkmath,