Unterhalb der Beispielmodule (n Nummern), die ich in meinem Projekt verwende, mit dem gleichen Methodennamen (s) mit unterschiedlichem Rückgabewert (Präfix mit Modulname).ruby - Module dynamisch definieren
module Example1
def self.ex_method
'example1_with_'
end
end
module Example2
def self.ex_method
'example2_with_'
end
end
Ich habe versucht, dies mit Metaprogrammierung wie #define_method zu erreichen. Aber es funktioniert nicht für mich. Gibt es einen Weg, es zu tun?
array.each do |name|
Object.class_eval <<TES
module #{name}
def self.ex_method
"#{name.downcase}_with_"
end
end
TES
end
Fehler Snap: Sie in der letzten Zeile sehen konnte, sagt, dass es nicht abgeschlossen ist.
"funktioniert nicht" ist keine gute Definition. Was ist das Problem? Welche Fehlermeldungen haben Sie erhalten? –
Keine Fehler. Wenn ich in der 'irb' versuchte, sagt der Befehl, immer noch ist die Methode nicht mit Ende geschlossen. Warum 'ist nicht eine gute Definition'? –
Warum ist es keine gute Definition? Weil Sie keine Details über Fehlermeldungen wie einen Stacktrace oder so geben. Geben Sie so viele (relevante) Details wie möglich an, damit wir das Problem leicht verstehen können. Vielleicht können Sie etwas Licht auf warum Sie so etwas implementieren möchten? –