締切済み

Rubyのsuperclassメソッドについて

  • 暇なときにでも
  • 質問No.7408976
  • 閲覧数127
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

Rubyについての質問です。処理系は1.8.7です。

class Foo
def initialize(a)
@a = a
end
end
のようなクラスを作成し、そのインスタンスを
foo = Foo.new(1)
のように作成します。
このとき、
foo.superclassを呼び出すと
NoMethodError: undefined method `ancestors' for #<Foo:0x2b691220cc88 @a=1>
とエラーになります。

一方で
class FooExt < Foo
def initialize (a,b)
@b = b
super a
end
end
のようにFooを継承したクラスを作り、
fooext = FooExt.new(1,2)
fooext.superclass とすると
=> Foo
とsuperclassメソッドが動作します。

このsuperclassメソッドはどこで追加されたものなのでしょうか?

回答 (全1件)

  • 回答No.1

ベストアンサー率 48% (4416/9105)

勘違いでは?

superclassは、Classクラスのインスタンスメソッドなので、標準ではそれ以外のオブジェクトに対しては定義されていません。

なので、
fooext.superclass
=> undefined method `superclass' for #<FooExt:0x283220d0 @b=2, @a=1> (NoMethodError)
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ