Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ############################Eval###################################
- a = "puts 1 + 2"
- eval a
- #ele executa a imprimindo 3 == metaprogamacao
- ############################Instance_eval para a instancia###################################
- #ele consegue pegar metodos privados tambem
- class Teste
- def initialize
- @variavel = "Danilo"
- end
- end
- teste = Teste.new
- #acesso pelo instance_eval
- puts teste.instance_eval{ @variavel}
- or
- teste.instance_eval do
- puts @variavel
- end
- #adicionar metodos na estancia
- teste.instance_eval do
- puts self
- end
- #ou se tiver varios metodos para inserir na estancia na classe ele nao aparecera
- teste.instance_eval do
- def metodo
- puts "metodo"
- end
- def metodo2
- puts "metodo"
- end
- def metodo3
- puts "metodo"
- end
- end
- #chamo ela
- puts teste.metodo
- ############################Instance_eval para a classe###################################
- class Teste
- end
- Teste.instance_eval do
- def metodo_de_classe
- puts "metodo de class instance_eval"
- end
- def metodo_de_classe2
- puts "metodo de classe instance_eval 2"
- end
- end
- #estou inserindo esses metodos na classe Teste
- Teste.metodo_de_classe
- Teste.metodo_de_classe2
- ############################class_eval###################################
- #para criar metodos para a estancia
- class Teste;end
- Teste.class_eval do
- def metodo_de_estancia
- puts "metodo de class_eval"
- end
- def metodo_de_estancia_eval2s
- puts "metodo de class_eval 2"
- end
- end
- Teste.new.metodo_de_instancia
- Teste.new.metodo_de_estancia2
- # Nela voce consegue inserir metodos nos objetos do sistema como a String ou fixnum
- # monkey path - voce insere um metodo no objeto string na sua aplicacao
- String.class_eval do
- def teste
- "douglas"
- end
- end
- "danilo".teste
Add Comment
Please, Sign In to add comment