Ruby on Rails

Ruby-Metaprogrammierung

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 Interview-Fragen·
Senior
1

Was ist Metaprogrammierung in Ruby?

Antwort

Metaprogrammierung ist die Fähigkeit eines Programms, Code zur Laufzeit zu schreiben oder zu verändern. In Ruby ermöglicht dies das dynamische Definieren von Methoden, Klassen und Modulen, wodurch der Code flexibler und kompakter wird. Diese Technik wird in Frameworks wie Rails häufig eingesetzt, um elegante DSLs zu erstellen und Codeduplizierung zu reduzieren.

2

Was ist der Zweck der define_method-Methode in Ruby?

Antwort

define_method ermöglicht das dynamische Erstellen von Methoden zur Laufzeit. Es nimmt einen Methodennamen (Symbol oder String) und einen Block entgegen, der den Methodenrumpf definiert. Anders als def erfasst define_method lokale Variablen aus dem umgebenden Scope über eine Closure, was nützlich ist, um Methoden mit parametrisiertem Verhalten zu erzeugen.

3

Wann wird die method_missing-Methode von Ruby aufgerufen?

Antwort

method_missing wird automatisch aufgerufen, wenn ein Objekt einen Methodenaufruf erhält, der in seiner Vererbungskette nicht existiert. Sie erhält den Namen der aufgerufenen Methode und deren Argumente, wodurch diese Aufrufe dynamisch behandelt werden können. Dies ist die Grundlage vieler Metaprogramming-Muster wie der in ActiveRecord verwendeten Ghost Methods.

4

Was ist der Hauptunterschied zwischen class_eval und instance_eval?

5

Welcher Hook wird aufgerufen, wenn ein Module in eine Klasse eingebunden wird?

+17 Interview-Fragen

Meistere Ruby on Rails für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten