Weźmy ten przykład:Ruby blok ciąg zamiast wykonania
write_as_string { puts 'x' }
Następnie chcę, aby móc zrobić
def write_as_string(&block)
puts block.to_s
end
Kiedy wykonać to, chcę wyjście będzie:
"puts 'x'"
Chcę być w stanie odebrać blok i uzyskać rzeczywisty kod bloku zamiast go wykonywać.
Motywacja: Tworzenie DSL, chcę, aby próbę można było przekonwertować na wiele innych wywołań metod, ukrytych przed wywołującym kodem - przy użyciu istniejących obiektów i metod bez ich łatania przez małpy.
Wszelkie pomysły na ten temat będą świetne!
Dzięki
Ben
To wydaje się fajne. Ale biorąc pod uwagę następujący przykład, potrzebuję jakoś uzyskać zdefiniowany blok jako ciąg znaków. Jak mogłem to zrobić? rubin = "def \ n Umieszcza 'A' \ Nend \ n \ ndef b \ nA \ Nend" parser = RubyParser.new ruby2ruby = Ruby2Ruby.new s-wyrażenie = parser.process (rubinowy) albo mieć Coś przeoczyłem? –
jeśli nie zależy Ci na kompatybilności z 1.9, polecam odpowiedź @ mletterle. – austinfromboston