Я только что столкнулся с таким поведением, которое я на самом деле не понимаю.
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
return `" module_foo "
Это выглядит так, как будто модуль каким-то образом включен до определения метода экземпляра класса.Не могли бы вы уточнить?