ささだです.

 これ,どうしましょう>まつもとさん


SASADA Koichi wrote:
>  ささだです.
> 
>  ruby-core のほうで Class#dup すると思った通りの動作にならない,と
> いうレポートをもらいました.
> 
> class A
>    @@a = 'A'
>    def a=(x)
>       @@a = x
>    end
>    def a
>       @@a
>    end
> end
> 
> B = A.dup
> B.new.a = 'B'
> p A.new.a #=> 'B'
>           #=> 1.8.7 だと 'A'
> 
>  ほとんど,Class#dup のことを考えていなかったのですが,この問題は真
> 面目に取り扱う必要があるでしょうか.例えば,Class#dup はサポートしな
> い,というのも手かと思います.やはりこれは必要な機能だ,と真面目に考
> えるなら,がらりと内部構造を変更する必要があります.もし必要なら,
> 1.9.0-3 までに間に合うように変更したいと思います.
> 
> 
>  ちなみに,次のような例を試してみたところ,1.8.7 では変なエラーにな
> りました.
> 
> class A
>   Const = 'A'
>   def foo
>     p Const
>   end
> end
> 
> B = A.dup
> 
> class B
>   Const = 'B'
> end
> 
> p A::Const
> A.new.foo
> p B::Const
> B.new.foo  # 1.8.6 以前,1.9.0 'A'
>            # 1.8.7 だとエラー.これはバグっぽい.
> 


-- 
// SASADA Koichi at atdot dot net