0Pricing
Ruby Academy · Aula

Uso de send e eval

Descubra como executar chamadas dinâmicas de métodos e avaliar strings como código Ruby.

Uso de send e eval é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.

Execução de código dinâmico

Usando send e avaliação

Ruby fornece métodos poderosos, como send e eval, para executar código dinamicamente.

Esses métodos permitem chamar métodos dinamicamente e avaliar expressões Ruby durante a execução.

Uso de send e eval — ilustração 1

O que é o método send?

O que é o método send?

send permite chamar métodos dinamicamente pelo nome.

Ele pode invocar métodos privados e públicos.

class Person
  def greet
    'Hello!'
  end
end

p = Person.new
puts p.send(:greet)

Usando send com argumentos

Usando send com argumentos

send pode passar argumentos para métodos dinamicamente.

class Person
  def greet(name)
    "Hello, #{name}!"
  end
end

p = Person.new
puts p.send(:greet, 'Alice')

Chamando métodos privados com send

Chamando métodos privados com send

send pode ignorar as regras de visibilidade dos métodos e chamar métodos privados.

class Person
  private
  def secret
    'This is a secret!'
  end
end

p = Person.new
puts p.send(:secret)

O que é o método de avaliação?

O que é o método de avaliação?

eval executa uma cadeia de caracteres como código Ruby durante a execução.

code = "5 + 10"
puts eval(code) # Outputs: 15

Executando código dinâmico com avaliação

Executando código dinâmico com avaliação

eval pode definir variáveis dinamicamente e executar expressões.

eval("x = 100")
puts x

Definindo métodos com avaliação

Definindo métodos com avaliação

Use eval para definir métodos dinamicamente.

eval("def dynamic_method; 'Hello from eval'; end")
puts dynamic_method

Riscos de segurança de send e avaliação

Riscos de segurança de send e avaliação

Usar send e eval de maneira inadequada pode introduzir riscos de segurança:

  • eval pode executar código não confiável, causando vulnerabilidades de segurança.
  • send pode chamar métodos privados ou confidenciais.
  • Use-os com cuidado para evitar comportamentos indesejados.

Recapitulação de send e avaliação

Parabéns!

Você aprendeu a usar send e eval para executar métodos dinamicamente.

Isso conclui a seção Metaprogramação em Ruby.

Uso de send e eval — ilustração 10

Perguntas Frequentes

A aula “Uso de send e eval” é grátis?

Sim — o texto completo de “Uso de send e eval” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.

O que vou aprender em “Uso de send e eval”?

Descubra como executar chamadas dinâmicas de métodos e avaliar strings como código Ruby. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Ruby Academy?

Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Uso de send e eval”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Ruby Academy?

Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que é metaprogramação?
  2. Definição dinâmica de métodos
  3. Classes abertas e monkey patching
  4. Uso de send e eval
← Voltar para Ruby Academy