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=%d\n", a, b); swap(&a, &b); printf("a=%d b=%d\n", a, b); return 0; }</stdio>
と、まぁ参照というより、ポインタ使ってるっぽい感じのイメージでいいんですかね。多分。
とりあえず、自分的には理解できてすっきり。
細かい言葉のあやみたいなところではあるんですが、
いつかこういったささいな部分ではまって、時間を無駄にするかもしれないし。
勉強になりました。
どうも。81会でお世話になりました、t-matsudaです。
minaco氏に教えてもらってきました。
このブログ書いてる方だったんですね、ちょい前からFeed読んでましたよ。
actionscript始めたばっかでまだまだ、わかんない事だらけなので
いろいろ勉強させてもらいます。
また、飲みにでも行きましょう。
これは、アセンブラで説明すると明快です。
あるアドレスに格納されている値を、関数に引き渡すとき
アドレスを渡すのが参照渡しで、値を渡すのが値渡し
例:8000番地に1という数字が入っている
8000を渡すのが参照渡し 1を渡すのが値渡し
game slot online
Jinten Blog