Dynamische Methodendefinition
Lernen Sie, mit define_method und method_missing Methoden dynamisch zu definieren und aufzurufen.
Dynamische Methodendefinition ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Methoden dynamisch erstellen
Dynamische Methodendefinition
In Ruby können Methoden zur Laufzeit dynamisch erstellt werden.
Das ermöglicht flexibleren und wiederverwendbaren Code.

define_method verwenden
define_method verwenden
Mit der Methode define_method können Sie Methoden dynamisch definieren.
class Person
define_method(:greet) { puts 'Hello!' }
end
p = Person.new
p.greetdefine_method mit Parametern verwenden
define_method mit Parametern verwenden
Sie können dynamisch erstellten Methoden Argumente übergeben.
class Person
define_method(:greet) { |name| puts "Hello, #{name}!" }
end
p = Person.new
p.greet('Alice')method_missing verwenden
method_missing verwenden
Die Methode method_missing fängt Aufrufe nicht definierter Methoden ab.
class Person
def method_missing(name, *args)
puts "Method '#{name}' is missing!"
end
end
p = Person.new
p.unknown_methodmethod_missing dynamisch behandeln
method_missing dynamisch behandeln
Sie können method_missing verwenden, um eine flexible Methodenbehandlung zu definieren.
class DynamicPerson
def method_missing(name, *args)
if name.to_s.start_with?('say_')
puts "You asked me to say: #{name.to_s.split('_')[1..-1].join(' ')}"
else
super
end
end
end
p = DynamicPerson.new
p.say_hello_worldrespond_to_missing? überschreiben
respond_to_missing? überschreiben
Damit Methodenprüfungen korrekt behandelt werden, überschreiben Sie respond_to_missing?.
class DynamicPerson
def method_missing(name, *args)
if name.to_s.start_with?('say_')
puts "Saying: #{name.to_s.split('_')[1..-1].join(' ')}"
else
super
end
end
def respond_to_missing?(name, include_private = false)
name.to_s.start_with?('say_') || super
end
end
p = DynamicPerson.new
puts p.respond_to?(:say_hello)method_missing für dynamische Getter und Setter verwenden
method_missing für dynamische Getter und Setter verwenden
Mit method_missing können Sie dynamische Attribute erstellen.
class DynamicPerson
def initialize
@data = {}
end
def method_missing(name, *args)
attribute = name.to_s.sub(/=$/, '')
if name.to_s.end_with?('=')
@data[attribute] = args.first
else
@data[attribute]
end
end
end
p = DynamicPerson.new
p.name = 'Alice'
puts p.nameSicherheitsrisiken von method_missing
Sicherheitsrisiken von method_missing
Eine unsachgemäße Verwendung von method_missing kann Risiken mit sich bringen:
- Unerwartetes Verhalten bei der Behandlung unbekannter Methoden.
- Mögliche Leistungseinbußen durch übermäßig viele Methodensuchen.
- Sicherheitslücken in Kombination mit Benutzereingaben.
Zusammenfassung zu dynamischen Methoden
Glückwunsch!
Sie haben gelernt, wie Sie Methoden in Ruby dynamisch definieren und aufrufen.
Als Nächstes erkunden Sie offene Klassen und Monkey-Patching.

Häufig gestellte Fragen
Ist die Lektion „Dynamische Methodendefinition“ kostenlos?
Ja — der vollständige Text von „Dynamische Methodendefinition“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Dynamische Methodendefinition“?
Lernen Sie, mit define_method und method_missing Methoden dynamisch zu definieren und aufzurufen. Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ruby Academy zu starten?
Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Dynamische Methodendefinition“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was ist Metaprogrammierung?
- Dynamische Methodendefinition
- Offene Klassen und Monkey Patching
- send und eval verwenden