[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1570] Re: Ruby のポイン



前橋です。

木下さん:
> >でも、この「名札」は、別の名札に「代入」できて、そうするとそっちの
> >名札に「名札の内容(名前?)」だけが複製されるわけですよね。
> 
> 名札を代入するのではなくて、この名札を付けているオブジェクトに対し
> て別のこの名札も付ける、という感覚だろうと:)。

C++の参照だとそんな感じかもしれませんが...
# 参照自体には二度と代入できないので。

> >前田さんの図によると、「名札」というより「紐付けされた、(何も書いて
> >ない)タグ」のようにも見えますが、そのモデルでは「参照の代入」を
> >どうとらえるのでしょう?
> 
>               名札1
>                 |
>                 |
> 名札2 --- [オブジェクト] --- 名札3
> 
> と言う感じでしょうか。

ええと、この場合、変数xがあったとしたら、xは、

・名札そのもの?
・名札の入れ物?

「箱でない」というところからすると名札の入れ物ってことはなさそうですが...

xが名札そのものだとすると、別のものに割り当てることも出来るのは
なんか変なような...

まあ名札からつながっているひもを張り替えてもいいですが、その場合、
結局「ひもの隅」が名札に代入されてる感じがします。

> # やっぱ敢えて矢印状にしない方がいい気がした^^。

逆向きから辿れないという特性があるわけですけどね。

> ポインタの感覚だと代入ですが、名札だと付け替えという感覚で、まるで
> オブジェクトについて回るもののような感じなのかなぁ。そうすると、と
> ある名札を取り出した時、それは「オブジェクトへの参照である」と言わ
> れると、確かに先入観が無ければ受け入れられるかもという気になってい
> ると。

うーん、

  if (aをつかう) {
     x = a;
  } else {
     x = b;
  }

  x.doHogeHoge();

という処理について、「xへの代入」を使わずに説明するのはかえって
大変じゃないでしょうか?

以下余談;
超巨大な「メカニカルコンピュータ」があるとして、オブジェクトを
new すると、こっちの工場から、機械的なトグルスイッチで1ビットを
表現し、かつ必要な容量を持つ「オブジェクト」ががこーんと出てきて、
参照は本物のひもで実現し、必要があれば「CPUユニット」がひもを
たぐりよせて、ロボットアームがトグルをぱっちんとやることでビットを
変更し、GCの時には全体がよっこらしょと傾いてぐらぐらっと振動して
つながってないオブジェクトががらんごろんと転げ落ちる、というモデル
を妄想したんですが(笑)、こういうので、「参照変数」は、ひもの端っこ
をくわえ込むフォルダになるような気がします。

                                               de 前橋