[ruby-dev:3507] Re: unfreeze is missing

From: matz@... (Yukihiro Matsumoto)
Date: 1998-09-10 01:32:18 UTC
List: ruby-dev #3507
まつもと ゆきひろです

In message "[ruby-dev:3506] unfreeze is missing"
    on 98/09/10, Inaba Hiroto <inaba@st.rim.or.jp> writes:

|String, Array, Hash等のインスタンスに対して、いったんfreezeをすると、
|スクリプトでその状態を元にもどしてオブジェクトを変更できるようにする事
|はできないようです。

はい,そうです.

|これはあえてそうしているのでしょうか? 実装する気になれば、さほど難し
|くないような気がするのですが、なにか問題があるのでしょうか?

あえてそうしています.実装上の問題は全くないのですが,freeze
とはたとえばHashのキーになった文字列が変更されないようにマー
クするような使い方を想定していますから,一方通行で十分と考え
たからです.自己責任で行うから,という考え方もあるのですが.

unfreezeが必要だと感じることはまずないと思いますが,変更が必
要なった時にはString#dupを使ってコピーを修正するのがよろしい
のではないでしょうか.String#cloneだとfreezeされたコピーが出
来ますのでご注意.

unfreezeの実装は簡単ですから,必要性について話し合う用意はあ
ります.
                                まつもと ゆきひろ /:|)

In This Thread