私は、関数を複数回呼び出すAS3プログラムを持っています。関数は複数の変数を返す必要があるので、これらの変数をすべて含むオブジェクトを宣言する関数のクラスを作成しました。たとえば、ここに私のクラスがあります:ActionScript:次回同じ関数が呼び出されたときに変更された関数呼び出しから返されたオブジェクトですか?
package
{
public class PER
{
public var N1:Number;
public var N2:Number;
public var a1:Array;
public var a2:Array;
}
}
2つの数字と2つの配列があります。
var newData:PER = new PER();
はのは、呼び出し元のプログラムがdata_set1に変数を返す関数、(data_set1は、入力変数に依存する引数1、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が異なっている(例えば、一緒にリンクされていない)。
私の質問は、配列は参照によって渡されるので、2番目の関数呼び出し時にdata_set1がdata_set2と一致するように変更されますか?なぜ、なぜそうではないのですか?
ありがとうございましたFlextrasは、 "あなたはそれらを関連付けるためのコードを書いていません。"私が質問する関係は、関数がクラスPERを使用して変数を返すことです。つまり、newData.a1がdata_set1.a1などに返されます。次の関数呼び出しnewData.a1がdata_set2.a1などに返されます(上記のmyNewArrayを宣言した方法と並行して表示されますか? )newData.a1は、クラスが後続の呼び出しで返された配列をリンクすることが初めて不可能になったときに、関数を終了すると破棄されますか? – ggkmath
"私が関係するのは、関数がクラスPERを使って変数を返すということです。"あなたの質問の根源です。次に、あるクラスの2つのインスタンスが、どういうわけかそれらを関連付けるための特定のコードを書かなければ、互いに関係がないことを検証してみましょう。上記のmyNewArrayを設定する方法と、PERインスタンスのインスタンス変数を設定するコードを共有していないため、PERインスタンスのインスタンス変数を設定する方法との間には平行性はありません。 'newData'とは何ですか?あなたの機能を分かち合わなければならないと確信していると思います。 – JeffryHouser
ありがとうFlextras。 'NewData'は上の質問のように関数内で宣言されています(例えば' var NewData:PER = new PER(); ')。並列は、data_set1.a1とdata_set2.a1の両方を設定するために、同じ変数(例ではmyNewArray、またはMyNewData.a1)を使用します。これは恐らく初心者の質問です。起こる可能性のある「参照による節約」の可能性を避けるようにしてください。再度、感謝します。 – ggkmath