Разъяснение метода переопределения Ruby mixin

Я только что столкнулся с таким поведением, которого не понимаю.

module M
  def foo
    "module_foo"
  end
end

class C
  def foo
    "class_foo"
  end
  include M
end

puts C.new.foo

Почему C.new.fooна самом деле возвращает class_foo? Я был почти уверен, что этот метод должен быть переопределен методом в модуле. Другое дело, замена "class_foo"на superприводит к тому, что C.new.fooвозвращает `"module_foo"

. определен метод экземпляра класса. Не могли бы вы уточнить?

12
задан Andrew Marshall 22 March 2012 в 18:03
поделиться