大原です。

matz / netlab.co.jp (Yukihiro Matsumoto) さんの、
"Thu, 23 Sep 1999 10:21:41 +0900" にだした、
「[ruby-list:17032] Re: attribute」というメールにて…… :

> いや、ふつーにお使いください。
>   class Fixnum
>     def foo(n)
>       @n = n
>     end
>     def foo2
>      @n
>     end
>   end
> 
>   1.foo(5)
>   p 1.foo2        # => 5

ちょっと脱線してしまうかも知れませんが、
下のような場合、

class Fixnum; def foo(n); @n = n; end; def foo2; @n; end; end
class String; def foo(n); @n = n; end; def foo2; @n; end; end

n = 1   	# (い)
p n.foo(5)	# (ろ) -> 5
p n.foo2	# (は) -> 5

p 1.foo(5)	# (に) -> 5
p 1.foo2	# (ほ) -> 5

n = "1" 	# (へ)
p n.foo(5)	# (と) -> 5
p n.foo2	# (ち) -> 5

p "1".foo(5)	# (り) -> 5
p "1".foo2	# (ぬ) -> nil


(り)と(ぬ)の "1" は、それぞれ違うインスタンスなので一致しない、
ということなのだろうと思いますが、
(に)と(ほ)が一致する、というのがどうもわかりません。

どうしてなのでしょうか?

----
OHARA Shigeki (大原重樹) <os / iij.ad.jp>