2012-01-10 4 views
0

함수를 여러 번 호출하는 AS3 프로그램이 있습니다. 이 함수는 여러 변수를 반환해야하므로이 변수가 모두 포함 된 객체를 선언하는 함수의 클래스를 만들었습니다. 예를 들어 다음은 수업입니다.ActionScript : 다음에 동일한 함수가 호출 될 때 변경된 함수 호출에서 반환 된 객체입니까?

package 
{ 
    public class PER 
    { 
     public var N1:Number; 
     public var N2:Number; 
     public var a1:Array; 
     public var a2:Array; 
    } 
} 

두 개의 숫자와 두 개의 배열이 있습니다. 함수 내부

, 나는 다음과 같은 선언이 있습니다

var newData:PER = new PER();

이의이 호출 프로그램이 data_set1은 입력 변수에 따라 달라집니다 data_set1에 변수를 (반환하는 함수를 호출한다고 가정 해 봅시다을 ARG1, ARG2,에서 arg3)를 사용하여 :

var data_set1:PER = function_name(arg1, arg2, arg3);

호출 프로그램 일부 물건, 다시 함수를 호출하지만 새로운 변수 이름으로 변수를 반환하지 않습니다, data_set2 :

var data_set2:PER = function_name(arg4, arg5, arg6);

내 의도가 data_set1하고 data_set2가 다른 (예를 들어, 함께 연결되지 않음).

제 질문은 배열이 참조로 전달된다는 점을 감안할 때 data_set1은 두 번째 함수 호출시 data_set2와 일치하도록 수정됩니까? 그 이유는 무엇?

답변

1

내 질문 은 2 기능 호출시 data_set2에 동의하도록 수정 data_set1 것, 배열 참조에 의해 전달되는 점을 감안입니까?

아니요 샘플 배열을 사용하는 표시되지 않습니다

그러나 당신이 우리에게 당신이 실제로 실행중인 기능의 예를 제공하지 않기 때문에 얘기하기 어렵다.

Why or why not? 

data_set1 data_set2과 서로 관계없이 두 개의 완전히 독립적 인 변수이다. 관련성을 높이기 위해 코드를 작성하지 않았습니다.

아마 당신은 data_set1과 data_set2의 a1과 a2 인스턴스 변수가 링크되어 있는지 물어볼 것입니다. 그 대답은 아마도 가능할 것이다. 다음과 같이하면 :

var myNewArray : Array = new Array() 
data_set1.a1 = myNewArray; 
data_set2.a1 = myNewArray; 

그런 다음 data_set1과 data_set2에 대한 a1은 동일한 배열 인스턴스를 가리 킵니다. 따라서 myNewArray에 대한 변경 사항은 data_set1.a1 및 data_set2.a1에 모두 반영됩니다.

+0

감사합니다. Flextras, "당신은 관련성있게 만드는 코드를 작성하지 않았습니다." 내가 의문시하는 관계는 함수가 클래스 PER을 사용하여 변수를 반환한다는 것입니다. 즉, newData.a1이 data_set1.a1에 반환됩니다. 다음 함수 호출 인 newData.a1이 data_set2.a1 등으로 반환됩니다. 위의 myNewArray를 선언 한 것과 같은 방식으로 병렬이 표시됩니까?) 클래스가 연속 호출에서 반환 된 배열을 링크하는 것이 더 이상 가능하지 않을 때 함수를 종료 할 때 newData.a1이 삭제됩니까? – ggkmath

+0

"내가 관심을 갖는 관계는 함수가 클래스 PER을 사용하여 변수를 반환한다는 것입니다." 귀하의 질문의 루트입니다, 그럼 클래스의 두 인스턴스가 어떻게 든 그들을 관련 특정 코드를 작성하지 않고도 서로에 아무런 관계가 있는지 확인하자. 위의 myNewArray를 설정하는 방식과 PER 인스턴스의 인스턴스 변수를 설정하는 코드를 공유하지 않았기 때문에 PER 인스턴스의 인스턴스 변수를 설정하는 방식 사이에 평행선이 표시되지 않습니다. 'newData'란 무엇입니까? 나는 당신이 당신의 기능을 공유해야 할 확실한 대답을 얻는다고 생각합니다. – JeffryHouser

+0

감사합니다. Flextras. 'NewData'는 위 질문 에서처럼 함수에서 선언됩니다 (예 :'var NewData : PER = new PER();'). 동일한 변수 (예 : myNewArray 또는 내 NewData.a1)를 사용하여 data_set1.a1 및 data_set2.a1을 모두 설정할 수 있습니다. 좋아, 이건 아마 멍청한 초짜 질문 일세. 일어날 수있는 "참조에 의한 저장"실수를 피하려고합니다. 다시 한번 감사드립니다. – ggkmath

관련 문제