2011-11-13 2 views
1

새내기 질문 : 여기서는 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은 두 개의 숫자를 반환하고 BXFN_complex는 두 개의 숫자 배열을 포함하는 객체이며 BXFN_complex의 배열의 ii 번째 요소에 ComplexDivide 두 개의 숫자를 할당하려고합니다.

답변

2

나는 당신이 달성하려고하는, 그리고 솔직히 내가 읽을 수있는 하드 코드를 찾을 수 있지만, 오류의 원인은 간단 이해 확실하지 오전 :

당신의 ComplexArray 인스턴스 배열처럼 행동하지 않습니다 - 두 개의 회원 배열, 실제 및 IMAG와 객체, 그리고 당신은 당신이 acually 해결하는 하나를 지정해야합니다

BXFN_complex.real[ii] 

또는

BXFN_complex.imag[ii] 

대신 그냥 ComplexNumber 객체 형태로 전달하려는 경우, 당신이 그것을 할 수있는 기능을 사용할 수 있습니다 단지

BXFN_complex[ii] 

의 :

(on ComplexArray): 

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

실제 및 IMAG 배열을 초기화하는 것을 잊지 마세요 항목을 추가하기 전에!

마지막으로 중요한 것은 두 가지 프리미티브 Number 값 배열을 보유하는 ComplexArray 대신 ComplexNumbers를 보유하는 프리미티브 배열을 사용하지 않는 이유를 이해하지 못한다는 것입니다. 그러면 이전처럼 BXFN_complex[ii]을 사용할 수 있습니다.

+0

감사합니다. Weltraumpirat에게 감사의 말을 전합니다. – ggkmath

관련 문제