1

ActionScript 3 でメソッド ByRef (または out など) にパラメータを渡すことは可能ですか?

クラスの先頭にグローバル スコープの変数がいくつかあり、== null の場合、メソッドはその変数を設定します。

入力する必要がある変数を渡していますが、これまでのところ、ローカルに入力された変数が返され、グローバルにスコープされたバージョンはまだnullのままです。

メソッドに渡される変数はさまざまであるため、メソッドにハードコードして単純に設定することはできません。

4

4 に答える 4

4

ActionScript 3 は、Java のようにデフォルトで参照によってパラメーターを渡します - プリミティブ型を除きます。しかし、あなたがやろうとしていることは、参照渡しではありません。渡されたパラメーターはオブジェクトへの参照です (プリミティブ型ではない場合)。これは関数内で変更することができます。

しかし、あなたの質問に答えるために。ここに解決策があります:

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

次のように使用できます。

populateIfNull('name', 'Bob')
populateIfNull('age', 20)
于 2009-08-26T15:33:55.727 に答える
1

オブジェクトを使用します。

例えば:

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]);
于 2010-08-20T11:23:03.797 に答える
1

ActionScript 3.0 では、すべての値がオブジェクトとして格納されるため、すべての引数が参照によって渡されます。ただし、Boolean、Number、int、uint、および String を含むプリミティブ データ型に属するオブジェクトには、値で渡されたかのように動作させる特別な演算子があります。 http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f56.html

Java では、引数は値で渡されます。 http://javadude.com/articles/passbyvalue.htm

于 2013-04-30T04:22:06.900 に答える
1

AS3 には参照渡しがありません (この点では、参照を値渡しするという点で Java に似ています)。

オブジェクトを別のオブジェクトでラップしてクライアント コードを制御すると、同様のことがシミュレートできます。

var myObj = null;
myFun({ a: myObj });
function (param) {
  if (param.a == null) {
    param.a = "Hello";
  }
}
于 2009-08-26T15:31:52.983 に答える