Trilha Júnior Trilha

Meta Ruby: send/define

O curso trata de duas ferramentas de metaprogramação do Ruby: .send e define_method. O ponto de partida é um problema de despacho, em que o método a chamar só é conhecido como dado em tempo de execução. O .send chama qualquer método por um nome guardado num símbolo ou string e repassa argumentos e blocos. Ele também ignora o private, enquanto o public_send o respeita. O define_method cria métodos de instância a partir de um nome e um bloco, muitas vezes num loop. As aulas reimplementam o attr_accessor e leem como o delegate do Rails gera métodos com module_eval.

O que você vai aprender

  • ✓Chamar um método por um nome calculado em tempo de execução com .send
  • ✓Por que o .send ignora o private e quando usar o public_send
  • ✓Gerar métodos de instância com define_method, inclusive num loop
  • ✓Reimplementar o attr_accessor com instance_variable_get e instance_variable_set
  • ✓Como o delegate do Rails gera métodos com module_eval e uma string de código
Prévia grátis · Aula 1 3 min de leitura

Chamando um método por um nome que você ainda não sabe

Toda chamada de método até aqui nesta série teve a forma object.method_name, com method_name digitado no código e fixado quando o arquivo foi escrito. Isso cobre quase tudo, até o método a chamar ser ele mesmo um dado, que só se conhece com o programa rodando.

Ler a aula completa grátis →

Currículo

7 aulas
Digite para buscar...