• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

なんでClass#superclassはあるのに#subclassesはないんだろう?

   1  class Class
   2    def subclasses
   3      ret = []
   4      ObjectSpace.each_object(Class) do |cls|
   5        ret << cls if cls.superclass == self
   6      end
   7      ret
   8    end
   9  end

posted by Png technohippy on Mon 4 Aug 2008 at 01:42 with 5 comments

Comments:

Png 瀧内元気 almost 16 years ago.

superclassはloadされてることが保障されてるけど、subclassesはloadされてない可能性があるので、ちゃんと機能させようとしたら

   1  Dir.glob("app/models/**/*.rb").each{|i| load i}

みたいな事をする必要があるからじゃないですかね。

Png nov almost 16 years ago.

あれ? 今某プロフィールサービスではsubclasses使えてるけど、あれはRailsだから?? まぁもちろんすべてのsubclassをloadしてからしかちゃんと動作しないですけど。

Png あんどうやすし almost 16 years ago.

なるほど、loadしてないと見えないからか。 いわれて見ればそのとおりですね。

あと、いまscript/consoleでみたらたしかにRailsにはありますね。 ActiveSupportはいろいろやりすぎてて全然把握できない・・・。

Png maiha almost 16 years ago.

load されてないのは今は存在しない(必要とされてない)クラスだから無視されて然るべき、だよ派。どちらにしても、後からサブクラスを動的に追加されうる以上、どうやっても完全性は満たせないし。

という観点から行くと、現時点で利用可能なサブクラスの一覧、という機能としての subclasses はあっていいと思う。てか、入れれ>AS

Png 瀧内元気 almost 16 years ago.

ancestorsへの対象性からdescendantsも欲しくなりますね。

これはASにも入ってないみたいだ。

or Preview
Social Bookmarks
  • Delicious
  • B_entry724
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ