Your SlideShare is downloading. ×
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby

1,559

Published on

Palestra apresentada durante o evento Ruby + Rails no Mundo Real 2010. …

Palestra apresentada durante o evento Ruby + Rails no Mundo Real 2010.
Entendendo, de verdade, como funciona metaprogramação em ruby e desmistificando o que normalmente chamam de magia negra.

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,559
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Voodoo é pra jacu! metaprogramação em ruby Leonardo Bessa David Paniz leobessa@gmail.com davidpaniz@gmail.com @leobessa @davidpaniz www.davidpaniz.com
  • 2. O que é metaprogramação? Metaprogramação é a programação de programas que escrevem ou manipulam outros programas (ou a si próprios) assim como seus dados
  • 3. O que é metaprogramação? Metaprogramming is writing code that writes code Metaprogramming is writing code that manipulates language constructs at runtime
  • 4. Qual a tarifa agora?
  • 5. class Calculator def calculate(time) if (7...21).include?(time.hour) 1 else 0.5 end end end p Time.now.tarifa 5
  • 6. class Time def tarifa if (7...21).include?(hour) 1 else 0.5 end end end p Time.now.tarifa 6
  • 7. "I invented the term Object- Oriented, and I can tell you I did not have C++ in mind." - Alan Kay
  • 8. class
  • 9. class
  • 10. Codando...
  • 11. woody.class == amigo.class
  • 12. Criação de métodos • Eu realmente posso adicionar um método a um único objeto? • Onde o método está? • Que tipo de objeto pode definir um método?
  • 13. Singleton Class • Também conhecidas como Metaclass, Eigenclass, etc • É uma classe como outra qualquer, mas escondida • Existe uma para cada objeto (lazy)
  • 14. Qual é a Singleton Class class << self self end
  • 15. Qual é a Singleton Class class Object def singleton_class class << self self end end end
  • 16. Codando...
  • 17. Como logar a chamada de um método?
  • 18. alias :new_name :old_name
  • 19. Que tal só ‘log :voar’?
  • 20. Abrindo a classe...
  • 21. E se eu quiser logar mais de método?
  • 22. Generalização

×