原です。
In message "[ruby-list:13441] Re: Ruby and LISP ( was Re: Ruby anywhere )"
on 99/04/08, Wakou Aoyama <wakou / fsinet.or.jp> writes:
|
|青山です。
|ここもわかりやすい説明というのは難しいですね。
この説明分かりやすかったです。自分でも一度同様な実験をしてみた
覚えがあります。
ただ一つ指摘したいのは、これは「ruby の仕様」というよりも「ruby
の標準ライブラリの Array の freeze の仕様」だという事です。まつ
もとさん以外の人が freeze を作ったら違うものになった可能性がない
とは言えない。例えば2段階まで freeze するようなものとか、参照関
係にある全てのオブジェクトを freeze する deep な freeze とか。
これは dup などでも同じで、クラスの作者が用途に応じて作るわけで、
「これが標準的な freeze だ」というのがあるわけではないですね。
(Object#dup が shallow copy であるというのはオブジェクトの構造
がわからない限り、そうせざるを得ないわけですが。)
ちなみに「破壊的な操作」は参照されるオブジェクトが一つでも変化し
たときに使われるそうです。(deep に考える。)