ひがきの日記

2008-05-22

どんなオブジェクトなの?

いつも忘れるのでメモ。
id:raito3 さんに教えてもらった。

どのクラスのオブジェクトか知りたいとき、

1.class     # => Fixnum
3.14.class  # => Float
"foo".class # => String

スーパークラスも含めて知りたいとき、

1.class.ancestors
    # => [Fixnum, Integer, Precision, Numeric, Comparable, Object, Kernel]
3.14.class.ancestors
    # => [Float, Precision, Numeric, Comparable, Object, Kernel]
"foo".class.ancestors
    # => [String, Enumerable, Comparable, Object, Kernel]

いつも、

1.ancestor
NoMethodError: undefined method `ancestor' for 1:Fixnum

とかしてしまって「スペルが間違ってるのかなぁ」とか思って焦る。(※ 間違ってます。)
irb の自動補完もできないし。(※ Module#ancestors だから。)

まず、オブジェクトのクラスを求めて、そのクラスに ancestors を聞けばいい。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mas-higa/20080522/1211450569