ExpertiDict

Ruby · Avançado · Inglês · Técnico

eval

/ɪˈvæl/método

Método do Kernel que executa uma string como código Ruby no contexto atual ou em um binding informado. Retorna o valor da última expressão.

Onde usar

Aparece em REPLs, geradores de código e metaprogramação antiga. No dia a dia, prefira define_method, send e class_eval com bloco.

Em código

x = 10
p eval("x * 2")  # => 20
b = binding
eval("y = 5", b)
p eval("y + x", b)  # => 15

Exemplos

Never run eval on user input.

Nunca rode eval em entrada do usuário.

Replace the eval with define_method.

Troque o eval por define_method.

Cuidado

Nunca avalie texto vindo do usuário: é execução remota de código. Mesmo com string confiável, perde-se análise estática e rastreio de erros.

Origem

Abreviação de evaluate, avaliar.

Veja também

Todos os termos de Ruby