Guest User

Untitled

a guest
May 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. ############################Eval###################################
  2.  
  3. a = "puts 1 + 2"
  4. eval a
  5. #ele executa a imprimindo 3 == metaprogamacao
  6.  
  7.  
  8.  
  9. ############################Instance_eval para a instancia###################################
  10. #ele consegue pegar metodos privados tambem
  11. class Teste
  12. def initialize
  13. @variavel = "Danilo"
  14. end
  15. end
  16.  
  17. teste = Teste.new
  18.  
  19. #acesso pelo instance_eval
  20. puts teste.instance_eval{ @variavel}
  21. or
  22. teste.instance_eval do
  23. puts @variavel
  24. end
  25.  
  26. #adicionar metodos na estancia
  27. teste.instance_eval do
  28. puts self
  29. end
  30. #ou se tiver varios metodos para inserir na estancia na classe ele nao aparecera
  31. teste.instance_eval do
  32. def metodo
  33. puts "metodo"
  34. end
  35. def metodo2
  36. puts "metodo"
  37. end
  38. def metodo3
  39. puts "metodo"
  40. end
  41. end
  42. #chamo ela
  43. puts teste.metodo
  44.  
  45. ############################Instance_eval para a classe###################################
  46.  
  47. class Teste
  48. end
  49.  
  50. Teste.instance_eval do
  51. def metodo_de_classe
  52. puts "metodo de class instance_eval"
  53. end
  54.  
  55. def metodo_de_classe2
  56. puts "metodo de classe instance_eval 2"
  57. end
  58.  
  59. end
  60. #estou inserindo esses metodos na classe Teste
  61.  
  62. Teste.metodo_de_classe
  63. Teste.metodo_de_classe2
  64.  
  65.  
  66. ############################class_eval###################################
  67. #para criar metodos para a estancia
  68. class Teste;end
  69.  
  70. Teste.class_eval do
  71. def metodo_de_estancia
  72. puts "metodo de class_eval"
  73. end
  74.  
  75. def metodo_de_estancia_eval2s
  76. puts "metodo de class_eval 2"
  77. end
  78. end
  79.  
  80. Teste.new.metodo_de_instancia
  81. Teste.new.metodo_de_estancia2
  82.  
  83. # Nela voce consegue inserir metodos nos objetos do sistema como a String ou fixnum
  84. # monkey path - voce insere um metodo no objeto string na sua aplicacao
  85. String.class_eval do
  86. def teste
  87. "douglas"
  88. end
  89. end
  90. "danilo".teste
Add Comment
Please, Sign In to add comment