[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:775

From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 09 Jan 2006 01:47:16 +0900
Subject: [yarv-dev:775] Re: cref with include module

 ささだです.

Yukihiro Matsumoto wrote:
>>module M
>>  A = :M_A
>>end
>>
>>class A
>>  include M
>>  p A         #=> :M_A @ ruby 1.8, 1.9
>>end
>>
>>クラスの見え方は lexical だと思っていたので,M::A を参照しにいくのは変
>>かな,と思ったのですが,そうでもないんでしょうか.
> 
> 
> 定数の検索順序は
> 
>   自クラス
>   その一つ外側
>   あとはancestorを順次検索
> 
> です。ですから、lexicalではないです。

 なるほど.include すると,M::A が C::A とアクセスできるので「自クラ
ス」がAを持っており,それを返した,ということですか.


 ただ,その場合,

module M
  A = :M_A
end

class C
  class A
    include M
    p A       #=> C::A
  end
end

p C::A::A     #=> :M_A

となるのは,なんとなく統一していないような気がするのですがどうでしょうか.

-- 
// SASADA Koichi at atdot dot net
// include (mix-in) は苦手

-- 
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       773 2006-01-08 12:32 [ko1 atdot.net       ] cref with include module                
       774 2006-01-08 19:52 ┗[matz ruby-lang.org  ]                                       
->     775 2006-01-09 01:47  ┗[ko1 atdot.net       ]                                     
       776 2006-01-09 11:04   ┗[matz ruby-lang.org  ]                                   
       797 2006-02-02 04:27    ┗[ko1 atdot.net       ]                                 
       912 2006-02-17 17:49     ┗[matz ruby-lang.org  ]