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