Ruby
Curiosidades sobre Procs em Ruby
Esses dias, estava montando um código para Ruby usando Procs (blocos de código), salvando esses procs em variáveis e depois rodando-os sobre “bindings” diferentes. Talvez tenha ficado um pouco complicado de entender, mas na prática é algo mais ou menos assim:
class UmaClasse def self.callback_qualquer ...#alguns códigos aqui.... @@bloco = proc do break if condicao_qualquer ...#códigos do meu callback end ...#mais algumas coisas end def salvar instance_eval(&@@bloco) puts "Rodei" end endOu seja, eu posso criar um bloco definindo um callbackqualquer, e depois rodar esse bloco no contexto da “instância”, não da classe (o código que eu fiz, na verdade, é bem mais complexo). Mas, surpreeendentemente, esse código não funciona – ele lança um LocalJumpError se a condição do Proc for satisfeita. Por quê?