문제

Actionscript 3의 Method ByRef (또는 Out 등)에 매개 변수를 전달할 수 있습니까?

내 클래스 상단에 전 세계적으로 범위가 지정된 변수가 있으며 == null이면 내 메소드가 해당 변수를 채 웁니다.

나는 채워져야 할 변수를 전달하지만 지금까지 내 노력은 국부적으로 인구가 많은 변수를 반환하여 전 세계적으로 스코핑 된 버전의 IT NULL을 남겨두고 있습니다.

내 메소드로 전달되는 변수는 다양하므로 내 메소드에서 하드 코드를 할 수없고 간단히 설정합니다.

도움이 되었습니까?

해결책

ActionScript 3은 원시 유형을 제외하고 Java와 같이 기본적으로 참조별로 매개 변수를 전달합니다. 그러나 당신이 그것을하려고하는 것은 참조별로 전달되지 않습니다. 전달 된 매개 변수는 객체 (원시 유형이 아닌 경우)에 대한 참조로, 함수 내부를 잘 수정할 수 있습니다.

그러나 귀하의 질문에 답변합니다. 다음은 해결책입니다.

function populateIfNull(variableName, value){
    this[variableName] = this[variableName] || value
}

다음과 같이 사용할 수 있습니다.

populateIfNull('name', 'Bob')
populateIfNull('age', 20)

다른 팁

AS3에는 참조 별 패스가 없습니다 (이와 관련하여 Java와 유사합니다.

다른 객체에서 객체를 감싸서 클라이언트 코드를 제어하면 비슷한 것을 시뮬레이션 할 수 있습니다.

var myObj = null;
myFun({ a: myObj });
function (param) {
  if (param.a == null) {
    param.a = "Hello";
  }
}

물체를 사용하십시오.

예 :

var myObj : Object = new Object();
var myArr : Array;

myObj.arr = myArr;

function populateViaRef(obj : Object) : void {
    obj.arr = new Array();

  for(var i : Number = 0; i < 10; i++)
     obj.arr[i] = i;

}

populateViaRef(myObj);

for(var i : Number = 0; i < 10; i++)
    trace(myObj.arr[i]);

ActionScript 3.0에서는 모든 값이 객체로 저장되므로 모든 인수는 참조로 전달됩니다. 그러나 부울, 숫자, int, uint 및 string을 포함하는 원시 데이터 유형에 속하는 객체는 마치 가치를 통과 한 것처럼 행동하게하는 특수 연산자가 있습니다.http://help.adobe.com/en_us/actionscript/3.0_programmingas3/ws5b3ccc516d4fbf351e63e3d118a9b90204-7f56.html

Java에서 인수는 가치로 통과됩니다.http://javadude.com/articles/passbyvalue.htm

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top