
Ruby alias e alias_method – Dicas de Ruby #1
Você já percebeu que a linguagem Ruby permite muitas vezes que a gente chame métodos no singular ou plural, ou até mesmo usando sinônimos e tudo continua funcionando? Pois bem, essa é uma das questões que os métodos alias e alias_method resolvem para a gente. Vamos conhecê-los?
Antes de começarmos
Programador(a), com esse artigo damos inicio a uma série chamada “Dicas de Ruby” onde vamos trazer conteúdos rápidos para você se aprofundar ainda mais no uso dessa linguagem incrível.
Esse artigo inicial foi escrito pelo nosso parceiro Jackson Pires do Videos de TI e está bem bacana, então bora \o/
O que são alias
Quando usamos Ruby, facilmente conseguimos fazer:
1 2 3 4 |
[23, 22, 31, 34, 35].size => 5 [23, 22, 31, 34, 35].length => 5 |
Ou seja, podemos usar o método length ou o método size que o resultado será o mesmo (porque size é um apelido “alias” para o método length).
Então, podemos tirar proveito dessa técnica para melhorar as chamadas dos nossos métodos, vamos ver um exemplo usando o método alias do ruby.
Imagine a seguinte classe:
1 2 3 4 5 |
class Usuario def nome_completo puts "Jackson Pires" end end |
A partir dessa classe podemos usar:
1 |
Usuario.new.nome_completo #=> Jackson Pires |
Mas, caso queiramos permitir que a mesmo método seja chamado por um apelido (alias), podemos fazer:
1 2 3 4 5 6 |
class Usuario def nome_completo puts "Jackson Pires" end alias nome nome_completo end |
Com essa alteração conseguimos chamar o método de duas formas:
1 2 |
Usuario.new.nome_completo #=> Jackson Pires Usuario.new.nome #=> Jackson Pires |
Percebemos que com esse simples método demos mais “vida” à nossa classe, tornando-a mais flexível.
alias vs alias_method
Além do método alias, existe também o método alias_method que é muito parecido, vejamos:
1 2 3 4 5 6 |
class Usuario def nome_completo puts "Jackson Pires" end alias_method :nome, :nome_completo end |
A primeira diferença que notamos é que precisamos informar os parâmetros separando-os por vírgula, além de serem informados como símbolos.
Sendo assim, podemos continuar usando:
1 2 |
Usuario.new.nome_completo #=> Jackson Pires Usuario.new.nome #=> Jackson Pires |
Escopos
A maior diferença entre esses métodos fica por parte do escopo dos objetos, veja esse exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Usuario def nome_completo puts "Jackson Pires" end def self.adicionar_alias alias_method :nome, :nome_completo end end class Desenvolvedor < Usuario def nome_completo puts "One Bit Code - Full Stack!" end adicionar_alias end Desenvolvedor.new.nome #=> One Bit Code - Full Stack! |
Note que apesar do alias_method estar definido na classe Usuário, ao usarmos o método “nome” a partir da classe Desenvolvedor o resultado apresentado é o da própria classe Desenvolvedor, ou seja, o escopo usado é o da classe a partir de onde foi invocado o método “nome”.
Vamos ver agora o resultado quando usamos o alias ao invés do alias_method:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Usuario def nome_completo puts "Jackson Pires" end def self.adicionar_alias alias nome nome_completo end end class Desenvolvedor < Usuario def nome_completo puts "One Bit Code - Full Stack!" end adicionar_alias end Desenvolvedor.new.nome #=> Jackson Pires |
Conclusão
Dessa vez, podemos notar que mesmo usando o método “nome” a partir da classe Desenvolvedor, o resultado apresentado foi o nome definido na classe Usuario, ou seja, quando usamos o método alias, mesmo invocando o método “nome” a partir da classe Desenvolvedor, o retorno do método é o da classe pai Usuário.
Enfim, agora que você já conhece esses novos métodos, comece a tornar suas classes mais flexíveis!
Um forte abraço e até a próxima! 😉

Não perca nenhum conteúdo
Receba nosso resumo semanal com os novos posts, cursos, talks e vagas o/
Primeira vez no OneBitCode? Curtiu esse conteúdo?
O OneBitCode tem muito mais para você!
O OneBitCode traz conteúdos de qualidade, e em português, sobre programação com foco em Ruby on Rails e também JavaScript.
Além disso, aqui sempre levamos à você conteúdos valiosos sobre a carreira de programação, dicas sobre currículos, portfólios, perfil profissional, soft skills, enfim, tudo o que você precisa saber para continuar evoluindo como Programador(a)!
Fique por dentro de todos os conteúdos o/
Nossas redes sociais:
📹 • https://youtube.com/Onebitcode [Live todas as terças-feiras às 19h)
💻 • https://linkedin.com/company/onebitcode
🙂 • https://facebook.com/onebitcode
📱 • https://instagram.com/one_bit_code
🐦 • https://twitter.com/onebitcode
Nossos cursos:
🥇 • Programador Full Stack Javascript em 8 Semanas
💎 • Curso Completo de Ruby
⚙ • online dating succes stories over 60
🐞 • bbw friendly dating sites
Espero que curta nossos conteúdos e sempre que precisar de ajuda, fala com a gente!
Estamos aqui para você 🙂
Bem-vindo à família OneBitCode o/
muito interessante essa possibilidade de definição de alias e alias_method, que venham mais dicas \O