10.11. Metaprogramowanie z użyciem ewaluacji łańcuchów

Problem

Tworzymy pewien kod, wykorzystując metodę define_method, jednak związana z tym intensywność posługiwania się odzwierciedleniami sprawia, że kod staje się mało czytelny i niezrozumiały, samo zaś metaprogramowanie wydaje się równie nużące jak tworzenie całego kodu „na piechotę”.

Rozwiązanie

Drugą, obok wykorzystywania metody define_method, oficjalnie zalecaną techniką metaprogramowania jest ewaluacja łańcuchów: zawartość łańcucha zostaje potraktowana jak kod w języku Ruby i wykonana.

Powróćmy na chwilę do przykładu z poprzedniej receptury, wykorzystującego metodę define_method:

class Numeric [['add', '+'], ['subtract', '-'], ['multiply', '*',], ['divide', '/']].each do |method, ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.