Home > ActionScript3.0 > [AS3]値渡しと参照渡し

[AS3]値渡しと参照渡し

flashrodさんの記事から、メソッドへの引数の渡し方について。

public function swap(a:Object, b:Object):void {
    var tmp:Object = a;
    a = b;
    b = tmp;
}

こんなメソッドを定義して、

var a:Object = {
    value: "abc",
    toString: function():String { return this.value; }
};
var b:Object = {
    value: "xyz",
    toString: function():String { return this.value; }
};
swap(a, b);
trace("a=", a);
trace("b=", b);

こんな感じで実行しても、

a= xyz
b= abc

こうならない。というお話。

ならないだろうとわかってはいるんですが、
言われてみれば参照渡しと言うならできるはず。
こういうところで説明ができない時点で、
なんとなく感覚でやってしまってるんだろうなぁ、と反省しなくては・・・。

結論としては、俗に言う「参照の値渡し」というやつなんですね。

C/C++で書くなら、

#include <stdio .h>

void swap(int* a, int* b){
	int* tmp = a;
	a = b;
	b = a;
}

int main(){
	int a = 1;
	int b = 2;

	printf("a=%d b=%dn", a, b);
	swap(&a, &b);
	printf("a=%d b=%dn", a, b);

  return 0;
}

と、まぁ参照というより、ポインタ使ってるっぽい感じのイメージでいいんですかね。多分。
とりあえず、自分的には理解できてすっきり。

細かい言葉のあやみたいなところではあるんですが、
いつかこういったささいな部分ではまって、時間を無駄にするかもしれないし。
勉強になりました。

Comments:1

t-matsuda 08-01-30 (Wed) 0:44

どうも。81会でお世話になりました、t-matsudaです。
minaco氏に教えてもらってきました。

このブログ書いてる方だったんですね、ちょい前からFeed読んでましたよ。

actionscript始めたばっかでまだまだ、わかんない事だらけなので
いろいろ勉強させてもらいます。

また、飲みにでも行きましょう。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.jinten.net/blog/archives/40/trackback
Listed below are links to weblogs that reference
[AS3]値渡しと参照渡し from Jinten Blog

Home > ActionScript3.0 > [AS3]値渡しと参照渡し

Search
Google
Feeds
Meta
Advertisement

Return to page top