値渡しと参照渡し。(プリミティブ型、リファレンス型)

問題なく使っていたからなんとなくは理解していたと思うけど、はっきりと理解していなかったのでメモ。

プリミティブ型

文字列、数値、ブール値(true,false)などの値を格納するデータ型。ちなみにこれらの値のことをリテラルっていうらしいです。

リファレンス型

それ以外のもの(オブジェクトとか)を格納するデータ型。

で、プリミティブ型にはリテラル値を渡す。リファレンス型には「値」ではなく「参照」を渡すということになる。

「値渡し」の場合

var a:uint;
var b:uint; // この二つは値を格納する「プリミティブ型」

a = 0;
b = a; // この時点でbにはaの値「0」が渡される
b +=1 // 0に1を加算したのでbの値は「1」となる

trace(a,b) // 出力: 0,1

リファレンス型の場合

var a_array:Array;
var b_array:Array;

a_array = new Array(“0″,”1″,”2″); // newして配列が作られました
b_array = a_array; // b_arrayはa_arrayの参照を受け取ります
b_array.push(“3″);
// 注:b_arrayはa_arrayの保持する配列を参照している。

trace(a_array);
// 出力:0,1,2,3 (つまり上の行ではa_arrayの配列にpushされていることになる)

ちなみにArray.push()は配列の後続として値を追加するメソッドです。

フェードを使ったスライドショーなんかが良い例になるのかなーと思いつつ、時間がないのでまた後で続きを書くことにします。

今回は下記の記事を参考にさせていただきました。

データの「値渡し」と「参照渡し」
http://gelsol.sub.jp/learning/type/003.html

The URL to TrackBack this entry is:

コメントをどうぞ