お世話になっております。A.中村です。

マニュアルで「ハッシュは nilを値にとることができません」
ということなので、

p Hash[1,2].keys
→[1]
p Hash[1,2,2,nil].keys
→[1]

は納得いくのですが、

p Hash[1,2].key?(2)
→false
p Hash[1,2,2,nil].key?(2)
→true

となってしまいました。

値は取れないがkeyは無いわけじゃないぞというなら
逆に前者の挙動を納得したくない(^^;ところです。
「key?(x)がtrueになるところのxの集合を
keysは返してくれる」のかなと期待したのですが。

つーか、そういうのを期待する場合、どうすれば
得られるのでしょうか。

古くて恐縮な
ruby 1.3.4-990625 [i386-cygwin]
ruby 1.3.6 (1999-07-28) [sparc-solaris2.6]
です。新しいのでは違う挙動なのかな…



ところで
ruby 1.3.4-990625 [i386-cygwin]
で、

p Hash[1,2].index(2)
→nil

となるのは(解決済)のバグだった…のですよねえ?
ruby 1.3.6 (1999-07-28) [sparc-solaris2.6]
では1が返ってくるので。