[#20227] dyna_vars problem? — Tanaka Akira <akr@...17n.org>

しばらく前から、稀に Ruby が core を吐くという問題を追いかけているので

15 messages 2003/05/19
[#20234] Re: dyna_vars problem? — matz@... (Yukihiro Matsumoto) 2003/05/19

まつもと ゆきひろです

[#20236] Re: dyna_vars problem? — Tanaka Akira <akr@...17n.org> 2003/05/19

In article <1053363181.529491.30320.nullmailer@picachu.netlab.jp>,

[ruby-dev:20166] Re: jcode.rb

From: Minero Aoki <aamine@...>
Date: 2003-05-05 15:50:35 UTC
List: ruby-dev #20166
青木です。

  In mail "[ruby-dev:20159] Re: jcode.rb"
    Hiroyuki Komatsu <komatsu@taiyaki.org> wrote:

> 小松です。

> ところで、下記コードのように String クラスで JString モジュールを
> include しても既存のメソッドは上書きされないようですが、これは
> そういうものなんでしょうか? 

これは仕様です。モジュールは継承列でクラスより上になるからです。

  ~ % ruby -e '
  module M
  end
  class String
    include M
  end
  p String.ancestors
  '
  [String, M, Enumerable, Comparable, Object, Kernel]

上書きするには直接そのクラスのメソッドを上書きするか、
あるいは継承してインクルードする必要があります。

  ~ % ruby -e '
  module M
  end
  class MyString < String
    include M
  end
  p MyString.ancestors 
  '   
  [MyString, M, String, Enumerable, Comparable, Object, Kernel]

-------------------------------------------------------------------
青木峰郎

In This Thread