[#30060] merge YARV — SASADA Koichi <ko1@...>

Hi,

20 messages 2006/12/31
[#30061] Re: merge YARV — SASADA Koichi <ko1@...> 2006/12/31

 ささだです。

[ruby-dev:29991] Re: Module#constants excluding superclass

From: Minero Aoki <aamine@...>
Date: 2006-12-04 15:16:52 UTC
List: ruby-dev #29991
青木です。

  In mail "[ruby-dev:29989] Module#constants excluding superclass"
  Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:

> なかだです。
> 
> http://jp.rubyist.net/magazine/?0017-CodeReview#l16 にあった件
> のパッチです。
> 
> むしろ、そういう場合は const_get, const_defined? を使ってくれ、
> といいたい気もしますが。

いえ、あれは、const_get や const_defined? ではダメだから困るという
ことです。現状の仕様では、

  class A
    CONST = 1
  end
  class B
    CONST = 1
  end

このようなクラス A, B があるとき、CONST が B の直下で (再) 定義され
たかどうか判定できません。

~ % cat t
class A
  CONST = 1
end
class B < A
  CONST = 1
end

p A.const_defined?(:CONST) == B.const_defined?(:CONST)
p A.const_get(:CONST) == B.const_get(:CONST)
p A.const_get(:CONST).equal?(B.const_get(:CONST))
p A.constants.sort == B.constants.sort

~ % forall-ruby t
ruby 1.8.0 (2003-08-04) [x86_64-linux]
true
true
true
true
ruby 1.8.1 (2003-12-25) [x86_64-linux]
true
true
true
true
ruby 1.8.2 (2004-12-25) [x86_64-linux]
true
true
true
true
ruby 1.8.3 (2005-09-21) [x86_64-linux]
true
true
true
true
ruby 1.8.4 (2005-12-24) [x86_64-linux]
true
true
true
true
ruby 1.8.5 (2006-08-25) [x86_64-linux]
true
true
true
true
ruby 1.8.5 (2006-10-23) [x86_64-linux]
true
true
true
true
ruby 1.9.0 (2006-12-04 patchlevel 0) [x86_64-linux]
true
true
true
true

--
青木峰郎

In This Thread