Ruby Mixins Methode überschreiben Klärung

Habe ich gerade konfrontiert dieses Verhalten verstehe ich nicht wirklich.

module M
  def foo
    "module_foo"
  end
end

class C
  def foo
    "class_foo"
  end
  include M
end

puts C.new.foo

Warum C.new.foo tatsächlich zurück class_foo ? Ich war ziemlich sicher, dass die Methode sollte überschrieben werden, durch die eine im Modul. Eine andere Sache, zu ersetzen "class_foo" mit super macht C.new.foo return `"module_foo"

Die tatsächlich aussieht wie Modul ist irgendwie eingeschlossen vor die Klasse-Instanz-Methode definiert ist. Könnten Sie das bitte klären?

InformationsquelleAutor Vlad Khomich | 2012-03-22
Schreibe einen Kommentar