Ruby on Rails

Metaprogrammazione in Ruby

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 domande da colloquio·
Senior
1

Cos'è la metaprogrammazione in Ruby?

Risposta

La metaprogrammazione è la capacità di un programma di scrivere o modificare codice a runtime. In Ruby, ciò consente di definire dinamicamente metodi, classi e moduli, rendendo il codice più flessibile e conciso. Questa tecnica è ampiamente utilizzata in framework come Rails per creare DSL eleganti e ridurre la duplicazione del codice.

2

Qual è lo scopo del metodo define_method in Ruby?

Risposta

define_method consente di creare metodi dinamicamente a runtime. Riceve un nome di metodo (symbol o stringa) e un blocco che definisce il corpo del metodo. A differenza di def, define_method cattura le variabili locali dello scope circostante tramite una closure, il che è utile per generare metodi con comportamenti parametrizzati.

3

Quando viene invocato il metodo method_missing da Ruby?

Risposta

method_missing viene chiamato automaticamente quando un oggetto riceve una chiamata a un metodo che non esiste nella sua catena di ereditarietà. Riceve il nome del metodo chiamato e i suoi argomenti, consentendo la gestione dinamica di queste chiamate. È la base di molti pattern di metaprogramming come i ghost methods usati in ActiveRecord.

4

Qual è la differenza principale tra class_eval e instance_eval?

5

Quale hook viene chiamato quando un module viene incluso in una classe?

+17 domande da colloquio

Padroneggia Ruby on Rails per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis