Ruby on Rails

Ruby-metaprogrammering

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 gespreksvragen·
Senior
1

Wat is metaprogrammering in Ruby?

Antwoord

Metaprogrammering is het vermogen van een programma om tijdens runtime code te schrijven of te wijzigen. In Ruby maakt dit het mogelijk om methoden, klassen en modules dynamisch te definiëren, waardoor de code flexibeler en beknopter wordt. Deze techniek wordt veel gebruikt in frameworks zoals Rails om elegante DSL's te maken en codeduplicatie te verminderen.

2

Wat is het doel van de define_method-methode in Ruby?

Antwoord

define_method maakt het mogelijk om methoden dynamisch tijdens runtime aan te maken. Het neemt een methodenaam (symbol of string) en een block dat de body van de methode definieert. Anders dan def legt define_method via een closure lokale variabelen uit de omliggende scope vast, wat handig is om methoden met geparametriseerd gedrag te genereren.

3

Wanneer wordt de method_missing-methode door Ruby aangeroepen?

Antwoord

method_missing wordt automatisch aangeroepen wanneer een object een methodeaanroep ontvangt die niet bestaat in zijn overervingsketen. Het ontvangt de naam van de aangeroepen methode en de bijbehorende argumenten, waardoor deze aanroepen dynamisch kunnen worden afgehandeld. Dit vormt de basis van veel metaprogramming-patronen, zoals de ghost methods die in ActiveRecord worden gebruikt.

4

Wat is het belangrijkste verschil tussen class_eval en instance_eval?

5

Welke hook wordt aangeroepen wanneer een module in een klasse wordt opgenomen?

+17 gespreksvragen

Beheers Ruby on Rails voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis