[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>

原です。

21 messages 1999/11/01
[#18239] [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — keiju@... (石塚圭樹) 1999/11/01

けいじゅ@日本ラショナルソフトウェアです.

[#18244] Re: [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — Shin-ichiro Hara <sinara@...> 1999/11/01

原です。

[#18289] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18291] Re: [book] csv_split2 — keiju@... (石塚圭樹) 1999/11/02

けいじゅ@日本ラショナルソフトウェアです.

[#18311] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>

 綾乃介です。

13 messages 1999/11/03

[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>

福間@福岡 です。

44 messages 1999/11/11

[#18580] — tokoma@... (中川 誠)

中川です。

44 messages 1999/11/14
[#18619] build on alpha — Go Nakagawa <nakagawa@...> 1999/11/15

もとの質問のかたとは別の中川です。

[#18737] Re: build on alpha — tokoma@... (中川 誠) 1999/11/18

中川です。

[#19144] Re: build on alpha — tokoma@... (中川 誠) 1999/12/04

中川です。長文で失礼します。

[#19341] Re: build on alpha — tokoma@... (中川 誠) 1999/12/09

中川です。

[#19344] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19400] Re: build on alpha — tokoma@... (中川 誠) 1999/12/10

中川です。

[#19426] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/11

えぐち@エスアンドイー です。

[#19459] Re: build on alpha — tokoma@... (中川 誠) 1999/12/13

中川です。

[#19461] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/13

えぐち@エスアンドイー です。

[#19506] Re: build on alpha — tokoma@... (中川 誠) 1999/12/14

中川です。

[#19520] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19522] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19543] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19562] Re: build on alpha — tokoma@... (中川 誠) 1999/12/15

中川です。

[#19569] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/16

えぐち@エスアンドイー です。

[#19592] Re: build on alpha — tokoma@... (中川 誠) 1999/12/16

中川です。

[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

20 messages 1999/11/16
[#18640] Re: constant? — WATANABE Hirofumi <Hirofumi.Watanabe@...> 1999/11/16

わたなべです.

[#18650] Re: constant? — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/16

もりきゅうです。

[#18657] Re: constant? — matz@... (Yukihiro Matsumoto) 1999/11/16

まつもと ゆきひろです

[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>

塩田です。

18 messages 1999/11/18
[#18779] Re: ADO にて datetime 型の取得 — Masaki Suketa<CQN02273@...> 1999/11/20

助田です.

[#18802] Re: ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...> 1999/11/21

オレンジソフト塩田です。

[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>

たけうちです。

16 messages 1999/11/18
[#18716] Re: header output in eruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/11/18

なひです.

[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 1999/11/22

[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>

渡谷といいます。

25 messages 1999/11/23

[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>

たけうちです。

14 messages 1999/11/25

[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

43 messages 1999/11/25
[#18975] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/11/27

[#19020] Re: Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...> 1999/11/29

石橋秀仁です。

[#19026] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/11/29

[#19081] Re: Ruby standard GUI framework? — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 1999/12/01

たかたです。

[#19092] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/01

[#19112] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/02

[#19131] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/03

[#18948] 他言語との比較 — とみたまさひろ <tommy@...>

とみたです。

18 messages 1999/11/26

[ruby-list:18310] Re: 変数、代入

From: "Takehiko Ueki" <takehiko@...>
Date: 1999-11-02 15:55:28 UTC
List: ruby-list #18310
植木です。

Wakou Aoyama <wakou@fsinet.or.jp> writes:
[ruby-list:18217] Re: ruby bug? (Re: 変数、代入)


>もう1つ、変数はオブジェクトでは無い、"foo" 等は新たなオブジェクトを生
>成するという事を認識する必要があります。
>  〜中略〜
>重要な点は、「変数はオブジェクトでは無い」「主役はオブジェクトであり、
>変数では無い」といった感じでしょうか。

変数とオブジェクトの違いを説明するのに
「変数はオブジェクトへのリンクである」というのはどうですか?

私なりに説明してみますと...
変数には、どのオブジェクトへのリンクなのかという情報が記憶され
変数の値を変更するというのは、別のオブジェクトにリンクしなおす
ということである。

変数をオブジェクトにリンクするには = 演算子を用いて次のようにします。

  foo = "foo"

このとき "foo" には固有の番号(仮に1)が自動的につけられるので
foo は、「1番のオブジェクトへのリンク」になります。

また、変数の持つリンク情報は別の、変数にコピーすることができ、
おなじく = 演算子を用いて次のようにします。

  bar = foo

これで、変数 bar も「1番のオブジェクトへのリンク」になりました。

現在、foo、bar ともに同一のオブジェクトにリンクされてますので
どちらの変数をレシーバとしてメソッドを呼び出しても、対象になるのは
1番のオブジェクト(つまり、この場合は "foo")になります。
次のようにすると、

  foo[0] = "F"

foo のリンク先である1番オブジェクトに、[]= メソッドを適用し
その結果、1番オブジェクトの内容は "Foo" になります。続けて

  bar << "bar"

とすると、やはり bar のリンク先である1番オブジェクトに対して
<< メソッドが適用されます。1番オブジェクトは先ほどの処理で
"Foo" となっているので、その後ろに "bar" が追加されます。

結果、1番オブジェクトの内容は "Foobar" となるわけですが、
変数 foo、bar は相変わらず「1番オブジェクトへのリンク」のままです。
副作用あるメソッドによって、オブジェクトの状態が変更されたとしても
変数に記憶されたリンク情報には何も影響を与えません。
今後も、与えられたメッセージをリンク先のオブジェクトに伝えるために
ひたすら仲介役として働いてくれます。

それでは、変数 foo を別のオブジェクトへのリンクに変更したい場合は
どうすればよいのでしょうか。単純に次のようにすればOKです。

  foo = "別のオブジェクト"

これで、foo は "別のオブジェクト" にリンクされます。
実際には "別のオブジェクト" にも固有の番号(仮に777)がありますから
foo は、「777番オブジェクトへのリンク」となります。
もともとあった1番オブジェクトへのリンク情報は、上書きされて
消えてしまいます。
以後、変数 foo に与えるメッセージは、すべて777番オブジェクトに
伝えられるようになりますから、1番オブジェクトに対するメッセージは
変数 bar に送るしかありません。
ちなみに、bar のリンク先も1番以外のオブジェクトに変更した場合は
1番オブジェクトにアクセスすることができなくなりますが、
GC が勝手に回収してくれます。


以上のことを簡単にまとめると

*変数には、オブジェクトへのリンク情報が記憶され、
 そのリンク情報は他の変数にコピーすることもできる。

*変数に与えられたメッセージは、すべてリンク先のオブジェクトに
 伝えられるため、同一のオブジェクトを複数の変数からアクセスできる。

*メソッドによってオブジェクトの内容が変更されたとしても
 変数の値(リンク情報)に影響を与えることはない。

*変数の値(リンク情報)の設定、変更は、= 演算子を用いて行う。
 その際、オブジェクトの内容に影響を与えることはない。

*どの変数からもリンクされていないオブジェクトは GC に回収される。


う〜ん、どうでしょう?
はたしてどれくらい当たってるのかなぁ...(^^;
間違ってたら指摘してくださいm(__)m


>これらは、メソッドへのオブジェクトの引き渡し等の理解にも有効かと思います。
>  〜中略〜
>このような場合、Ruby における引数の受渡しは参照渡しであるという説明が
>一般的ですが、参照渡しに馴染みが無い方などには、変数はオブジェクトでは
>無い、Ruby における主役はあくまでオブジェクトであり、引き渡されるのは、
>変数が指し示すオブジェクトである。という説明で、どうでしょうかね。

こちらも、メソッドの引数として引き渡されるものは、
変数に記憶されているリンク情報である。という感じではどうでしょう。


---------------------------------------
植木岳彦  E-Mail: takehiko@os.rim.or.jp
Takehiko Ueki






In This Thread

Prev Next