著作一覧 |
irb(main):035:0> a = [1] => [1] irb(main):036:0> h = { a => 1 } => {[1]=>1} irb(main):037:0> h[a] => 1 irb(main):038:0> h[[1]] # aと[1]は異なるインスタンスだがeql?なので値が取得できる(はず) => 1 irb(main):039:0> a << 1 => [1, 1] irb(main):040:0> h[a] # eql?が満たされなくなったからかな? => nil irb(main):041:0> h.keys[0].eql? a => true # eql?は満たされている irb(main):042:0> h.keys[0].hash == a.hash => true # hashの値も等しい irb(main):043:0> h[[1,1]] => nil # ふむ irb(main):044:0> h.keys[0].eql? [1,1] => true # なぜだ irb(main):045:0> h.keys[0].hash == [1,1].hash => true追記:ああ、テーブル上のスロットが変わるからだ。いちいちキーをチェックしたらハッシュじゃないし。
irb(main):192:0> h[[1]] # 今度はハッシュが等しいので正しいスロットをポイントする => nil # しかし残念、キーとeql?じゃないということか。納得。
関係ないが。
どうも、映画館かテレビかどっちかでPV使った広告を観たことがあるな。すごく印象に残っているってことが、サビの部分を聴いて思い出した。
変なところで図書館戦争にぶつかって、なんか世の中のトピックってのは狭いもんだとかも思ったり。
ジェズイットを見習え |
どんどん、BaseBallBearにはまってるようで、古参ファンとしてうれしい限りww
ちなみに Hash#rehash でハッシュの再計算ができます。
>はまってる<br>気に入る気に入らないってのは微妙でおもしろいですね。確かにはまってるなぁ。<br>>refash<br>確かにそうでした。もっともキーを変更してrehashするのは本末転倒ですね。if hash.length * 3 > hash.size then hash.rehashとかかなぁ。
読み返したらわけのわからないこと書いてるな>おれ