福嶋です。 OHARA Shigeki <os / iij.ad.jp> wrote: > p 1.foo(5) # (に) -> 5 > p 1.foo2 # (ほ) -> 5 > p "1".foo(5) # (り) -> 5 > p "1".foo2 # (ぬ) -> nil > > > (り)と(ぬ)の "1" は、それぞれ違うインスタンスなので一致しない、 > ということなのだろうと思いますが、 > (に)と(ほ)が一致する、というのがどうもわかりません。 Rubyでは Fixnum のインスタンスは各数について1つしか存在しないから だと思います。つまり (に)と(ほ) は同じインスタンスだということに なります。 irb(main):011:0> "1".equal? "1" false irb(main):012:0> 1.equal? 1 true こうなっているのはインタプリタのパフォーマンスのためでしょう。 Bignum だと別のインスタンスになります。 irb(main):013:0> 1000000000000000000 == 1000000000000000000 true irb(main):014:0> 1000000000000000000.equal? 1000000000000000000 false --- 福嶋正機