Ruby: Executando um bloco no contexto do objeto

Palavras-chave: ruby, bloco, objeto, contexto

Um meio de executar um bloco dentro do contexto de um determinado objeto é adicionar um método direto no módulo Kernel do Ruby. Ele aceitará ser chamado diretamente como método do objeto ou passando o objeto como parâmetro:

module Kernel
	def with(obj=nil,&block)
		(obj || self).instance_eval &block
	end
end

(0..5).with { puts "#{min}/#{max}" }

with("TaQ") do
	puts "Oi, #{self}!"
	puts "Seu gêmeo malvado se chama #{self.reverse}."
end

[1,2,3,4,5].with do
	puts "Número aleatório de #{min} a #{max}: #{self[rand(size)]}"
end

A dica foi inspirada em outras pairagens, mas é boa e merecia uma referência (copião na cara dura). ;-)

This entry was posted in Ruby. Bookmark the permalink.

2 Responses to Ruby: Executando um bloco no contexto do objeto

  1. Thiago says:

    Olá, estou gostando bastante das dicas do codare. Assinei o feed da parte de ruby e php.

    Porém tenho uma duvida, ou sugestão.
    Quando ao layout das notícias do codare, eu estou vendo em 2 leitores de feed, são eles o newshutch e o bloglines e está saindo desorganizado, sendo que feeds de outros sites estão saindo normalmente.

    Olhem como ficou essa notícia mesmo:

    Palavras-chave: ruby, bloco, objeto, contexto Um meio de executar um bloco dentro do contexto de um determinado objeto é adicionar um método direto no módulo Kernel do Ruby. Ele aceitará ser chamado diretamente como método do objeto ou passando o objeto como parâmetro: module Kernel def with(obj=nil,&block) (obj || self).instance_eval &block end end (0..5).with { puts “#{min}/#{max}” } with(“TaQ”) do puts “Oi, #{self}!” puts “Seu […]

  2. Thiago, agora o Feed vem completo e esse problema foi resolvido. Obrigado!

Comments are closed.