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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.