Skip to content

Ruby: A Simple Example of Meta Programming

A really cool piece of code I read today in the book Ruby on Rails: Up and Running.

class Talker
  def method_missing(method)
     if method.to_s =~ /say_/
       puts $'
     end
  end
end

t = Talker.new

t.say_hello
t.say_something
t.say_goodbye

And running

$ ruby Talker.rb
hello
something
goodbye

But why do that when we have parameters? Because you can do some methods really dynamic with a clear semantic, just looking for them you know are they are doing.

Published inenglish

2 Comments

  1. Tiago Tiago

    Cara, eu tô lendo o mesmo livro q vc, agora me diz uma coisa, tu entendeu esse código ae?
    Eu procurei na net, achei sobre td, menos sobre esse puts $’
    Como pode puts $’ imprimir hello qdo passa pra dentro d um método say_hello?
    Eu não entendi 🙁
    falow

  2. Tiago Tiago

    Cara, só mais uma coisa, esse livro é mto ruim né, tu reparou a quantia de erros q tem?
    O mais grotesco que achei até agora foi que a parte Classes complexas do capítulo 3 deveria estar no final do capítulo 4, no próprio livro tá escrito que aquele conteúdo será apresentado no capítulo 4. Fora que deu pra notar que nada a ver as Classes complexas ali no capítulo 3.

    Que lixo de livro. Maldita tradução.

Leave a Reply

Your email address will not be published. Required fields are marked *