0Pricing
Ruby Academy · Lektion

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.

Dynamische Methodendefinition — Illustration 1

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.greet

define_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_method

method_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_world

respond_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.name

Sicherheitsrisiken 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.

Dynamische Methodendefinition — Illustration 10

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

  1. Was ist Metaprogrammierung?
  2. Dynamische Methodendefinition
  3. Offene Klassen und Monkey Patching
  4. send und eval verwenden
← Zurück zu Ruby Academy