[#37762] tcltklibの作りかた — Mitsuo Igarashi <mitsu5@...>
mitsu5 です。
8 messages
2003/06/07
[#37774] Ruby/zlibのインストール方法はどのようにするのですか? — "igusa" <igusa@...>
いぐさです。
6 messages
2003/06/09
[#37801] 動的に生成したクラスメソッドのundef — Ryuichiro Hara <r@...>
動的に生成したメソッドを除く方法を知りたく質問します。
6 messages
2003/06/19
[#37814] Re: Oniguruma and PHP — kkosako@...
> スラッシュドットでも話題になっていましたが、Onigurumaを
1 message
2003/06/23
[#37815] 配列の使い方 — Kouji Miyauchi <koji.miyauchi@...>
宮内と申します。
9 messages
2003/06/23
[#37830] reference from nested class to a constant in a module included by the parent class — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
6 messages
2003/06/27
[#37838] Raccのインストールについて (MacOS X) — "Ken'ichiro Nakatani" <kenzo@...>
はじめまして。中谷と申します。
8 messages
2003/06/27
[ruby-list:37836] Re: reference from nested class to a constant in a module included by the parent class
From:
Kazuhiro Yoshida <moriq@...>
Date:
2003-06-27 20:19:59 UTC
List:
ruby-list #37836
もりきゅうです。 NISHIMATSU Takeshi <t-nissie@imr.tohoku.ac.jp> wrote: > 下の例の★はどの条件に合致していると考えればよいのでしょうか. > ★で直接参照できるので, ネストしたクラスの中からも > 直接参照できそうだと考えてしまいました. > > # incmod.rb > module M > ConstM = "M" > end > class Parent > ConstP = "P" > include M > p ConstP # => "P" > p M::ConstM # => "M" > p ConstM # => "M" ★ > end > 自分で定義されたもの > その外側のクラスで定義されたもの > そのまた外側で定義されたもの(以下トップレベルまで続く、トップレベル含まない) > スーパークラスで定義されたもの > そのスーパークラスで定義されたもの(以下Objectまで続く、Object含まない) 合致するのは スーパークラスで定義されたもの です。 スーパークラスってどこにあるの? ParentのスーパークラスはObjectじゃないの? ということになりますが、 Parent < Object のとき class Parent include M end を実行すると Parent < (M) < Object になると考えてください。 M がかっこ書きなのは、M がクラスではないからですが、 定数参照のふるまいを考える上では、このようにクラスツリーに挟むとすっきりします。 Module#ancestors も試してみてください。 > ぼくはRubyのincludeを「梱包を解いてそこに置く」というかんじで > 理解しています. ということなので、 module M ConstM = "M" end class Parent ConstP = "P" include M end は class Parent ConstP = "P" ConstM = "M" end と書くのと同等だと考えておられると思いますが、そうではないのです。 ---- YOSHIDA Kazuhiro moriq@moriq.com http://www.moriq.com/