1

次のコードを検討してください。

class Hello
  def hi
    puts "Hello"
  end
end

class HelloWorld < Hello
  def hi
    super.hi
    puts "World"
  end
end

HelloWorld.new.hi

出力を与えます:

$ ruby super.rb
Hello
super.rb:9:in `hi': undefined method `hi' for nil:NilClass (NoMethodError)
    from super.rb:14:in `<main>'

Hello が印刷されるのはなぜですか? エラーが発生するだけだと思います。また、私が本当にすべきことはsuper代わりに電話をかけることであることも知っていますsuper.hiが、「ボンネットの下で」何が起こっているのかを理解したいと思っています。

4

2 に答える 2