From: EGUCHI Osamu Date: 1997-09-23T10:54:00+09:00 Subject: [ruby-list:4526] Object#freeze (Re: ruby1.0(970919) for mswin32) えぐち です > わたなべです. > > Yukihiro Matsumoto writes: > > :|また -I, $-I のほうはなにも対策が入ってません. > : > :こっちは気が付きませんでした.どういう風にしたもんでしょうね. > :無視するか,例外を起こすかだと思うのですが…. > > -I は RUBYLIB と同じように rb_safe_level() で判断すればいい > として, 問題は $:, $-I, $LOAD_PATH ですよね. > $:.unshift "." とかできちゃうし. > やっぱり例外かな. スプリプトに処理が渡る前に、 freeze してしまえば、 、と思ったのですが、 $:.type => Array なのですね。 どっちみち例外を追加するなら、Object で freeze メソッドを サポートしてしまい汎用的に「オブジェクトの定数性」を扱えると スマートだとおもいます。 (これでも、配列と配列要素全てを freeze しないといけない!) a="abc"; a.freeze; a+= "d"; print "a=", a.inspect, "\n" a="abcd" という様に、定数性を確保するのは ruby では結構厄介な問題なんですね。 # 基本的な質問ですが、 「フリーズした文字列は解凍(?)できない」 という理解であっていますか? えぐち