次のコードを検討してください。
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
が、「ボンネットの下で」何が起こっているのかを理解したいと思っています。