From: Shigeo Kobayashi Date: 1999-11-17T23:23:19+09:00 Subject: [ruby-list:18689] Re: 定数 / 配列 /freeze([book] $*, etc) 小林です。 サブジェクトを変えました。 GOTO Kentaro さんへの返信: > >テストプログラムで試してみました.CVARが定数なのに > >  CVAR[100]="abc" > >等とできるのが最初は奇異に感じましたが、これはこれで納得しました。 > > 定数というのは代入によって与えられる CVAR という名前と、それ > が指してるオブジェクト(配列)の結びつきが定数的だということで > す。[]= や push で設定できるようなオブジェクトの「内容」が定 > 数的という意味ではないです。要すれば再代入すると怒られる名前 > のことを定数といってるわけです。 > はい、定数CVARが参照している領域(この表現が正しいかは別として) は「定数」ではないということですね(この意味で「納得」していました)。 > なお、配列や文字列は freeze というメソッドによってそのオブジェ > クトの内容の変更を禁止することが出来ます。 > ruby本493にfreezeは「配列の凍結(変更禁止)」とありました。  CVAR = []  CVAR[0]=0  CVAR.freeze  CVAR[0] = 100 で確かに、can't modify frozen array となりました。 配列サイズだけの「freeze」もあったらいいな(単なる思い付きです) と思いました。 ところで、freezeがあるのならmeltはあるのでしょうか? 因みにCVAR.melt、CVAR.unfreezeともにだめでした。 定数と関連してfreezeを教えていただきましてありがとうございます。 このように、関連した情報というものは、なかなか一人では得がたい ものです。これからも、よろしくお願い致します。 小林 茂雄 E-Mail: shigeo@tinyforest.gr.jp Home Page: http://www.tinyforest.gr.jp