7
  • talk: super: no superclass method talk (NoMethodError)既に存在するメソッドをオーバーライドすると、次のエラーが発生するのはなぜですか?
  • スーパーメソッドを呼び出すようにこのコードを修正するにはどうすればよいですか?

これが私が使用しているサンプルコードです

class Foo
  def talk(who, what, where)
    p "#{who} is #{what} at #{where}" 
  end
end

Foo.new.talk("monster", "jumping", "home")

class Foo
  define_method(:talk) do |*params|
    super(*params)
  end
end

Foo.new.talk("monster", "jumping", "home")
4

1 に答える 1

5

#talk を上書きするので動作しません。これを試して

class Foo
  def talk(who, what, where)
    p "#{who} is #{what} at #{where}" 
  end
end

Foo.new.talk("monster", "jumping", "home")

class Bar < Foo
  define_method(:talk) do |*params|
    super(*params)
  end
end

Bar.new.talk("monster", "table", "home")
于 2012-12-12T18:48:14.517 に答える