From: Kenta MURATA Date: 2003-08-31T21:16:22+09:00 Subject: [ruby-list:38308] Re: 配列における「変数のモデル」 むらけんです. In message <20030831202623.9E80.GGB03124@nifty.ne.jp> at Sun, 31 Aug 2003 20:57:36 +0900, Take_tk wrote: > > > (5−1)変数の値が変わる、といっても、代入によって変数が指し示している > > > オブジェクトが入れ替わる場合と、破壊的メソッドによって変数が指し示してい > > > るオブジェクトの状態が変わる場合とがある。 > > > > Ruby の変数が持っている値はオブジェクトのリファレンスなので, > > 破壊的なメソッド呼び出しでは変数の値は変化しませんよね. > > G:\DOWNLOAD\ruby-1.8.0-20030404-i386-mswin32\bin>ruby -e "a='a';p a;a<<'b';p a" > > "a" > "ab" これは,変数の値が変化してるわけではなく,オブジェクトの中身が 変化しただけですね. [muraken@feynman ruby2]$ ruby -e "a = 'a'; p a.object_id; a << 'b'; p a.object_id" 537592166 537592166 >  うむむ…。「リテラル:プログラム中に直接登場するオブジェクト」(『Ruby > 本』p.566)と書いてありますねぇ…。 >  リテラルもオブジェクト空間に存在するオブジェクトを指し示すものだと思う > んだかなぁ…。どうなんだろ? リテラルもオブジェクト空間に存在するオブジェクトですね. > G:\DOWNLOAD\ruby-1.8.0-20030404-i386-mswin32\bin>ruby -e "p [1,2,3].id" > 21121800 ← これはオブジェクト空間でのアドレスを示しているはず。 id はアドレスと考えても差し支えないとは思いますが,それと (6-1) の内容とは関係あるのでしょうか?あまり関連性を感じないの ですが. -- 1024D/2A3FDBE6 2001-08-26 Kenta MURATA (muraken) Key fingerprint = 622A 61D3 280F 4991 4833 5724 8E2D C5E1 2A3F DBE6