池田孝志です。

WATANABE Hirofumi <eban / os.rim.or.jp> writes:

> Takashi Ikeda <cercine / kcn.ne.jp> writes:
> 
> :nil で削除していたスクリプトで、Hash#size が 0 になることが
> :ありません。Hash で要素の個数を数えてるような時はまずそうで
> :す。
> 
> 個数が問題になるケースはあまり思いつかないけど, 確かに互換性
> という点ではまずいかも.

Hash に格納された要素の個数を見ていたスクリプトを書いた事が
あるのですが、これもちょっと拡張すると、要素を削除したりする
事にもなるので、ひょっとしたら size に関係するかな〜とか思っ
てみたりしました(^^;

> ていうか nil を代入すると削除されるなんて思いもよらなかった
> ので, そういう人も結構いるんじゃないかなという甘い期待もあっ
> たりして.

希望は持ちたいですね。
# 僕も、nil が値として持てることには賛成です。

1)

> :どのような値を取っても削除できないと言う事であれば、やはり互
> :換性は(さきの nil の例のように)なくなるので、なんらかの値で
> :削除できるようには残しておかないといけないように思いますし、

2)

> :そしてそのために nil を値として持ちたい時には他の default 値
> :をさきに設定しておく事が必要となってきます。
> 
> 削除は Hash#delete というそのものずばりのメソッドがあるんで
> すけど, そういうことじゃなくて?

ただ単に、nil で削除出来るための互換性を保つ意味での拡張、と
いうだけです。深い意味はありません :-P
1)が仮定で、2)がそこを踏まえた必要性?です。

nil で要素を消し去る互換性を保つなら、Hash#delete を nil で
消しているスクリプトに対しても適用しよう、とは言えなかったの
でこういう話をしてしまいました。

-- 
池田 孝志  cercine / kcn.ne.jp