考虑这段代码:
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
但我想了解“幕后”发生的事情。