Em Ruby temos vários comandos e operadores que a primeira vista nos deixam em dúvida quando estamos iniciando mas depois que aprendemos começamos a sentir muita falta quando trabalhamos em linguagens que não os tem. Coisas como Blocos ou funções anônimas, Módulos , <=>, =~, .., ..., $1 e muitos outros.
E questionado por um amigo sobre a diferença entre em ||= e = resolvi fazer este postzinho rápido.
Basicamente a repostas do que é o ||= (chamado de atribuição condicional) se resume em, um idioma comum em Ruby usado para atribuir um valor a variável apenas se ela ainda não existir.
Então funcionaria tipo:
animal ||= "Dog"
Então se animal não tiver um valor ainda ele será definido para “Dog”. Então a dúvida é: quando utilizaremos isto? E eu respondo, muitas vezes, como abaixo:
def transactions
@transactions ||= []
end
Então é um operador ótimo para definir valores padrão e desenvolver alguma forma de memoize/cache para algo que não muda com muita frequência.
Bem, acho que é isto. Se alguém lembrar de algum exemplo ou de algo que eu tenha esquecido por favor complete nos comentários.
3 Comentários to “Operador ||= em Ruby”
Rafael diz:
01/09/2009 em 04:52 PM
Daniel, muito bom, estava esses dias mesmo procurando por esta explicação.
Obrigado.
Rafael
Junio Vitorino diz:
02/09/2009 em 08:21 AM
Putz, já posso até fazer os comparativos em outras linguagens e realmente o que um =|| não faria em algumas das que mais uso, já que para fazer o que esse simples operador faz tenho muito mais trabalho.
Valeu Daniel.
Ismael Stahelin diz:
04/10/2009 em 07:07 PM
Bom post, simples e que apaga a dúvida de muita gente. Geralmente o pessoal não escreve sobre essas coisas, talvez porque os experientes achem que todos sabem. É o tipo de informação que as vezes é difícil de encontrar rapidamente.
Comentário
CATEGORIAS
HomeDesign
SEO
Empreendimento
Cifras
Ruby e Rails
Flex
Photoshop
Flash
XHTML/CSS
JavaScript
Variados
Database
Firefox
Projetos
3D
Projetos
TextMate
Smalltalk
Mac
Livros
ARQUIVO
07/2010 (2)06/2010 (4)
05/2010 (4)
04/2010 (4)
03/2010 (5)
02/2010 (7)
01/2009 (4)
12/2009 (7)
11/2009 (4)
10/2009 (10)
09/2009 (7)
08/2009 (6)
07/2009 (12)
06/2009 (5)
05/2009 (6)
04/2009 (9)
03/2009 (14)
02/2009 (18)
01/2009 (14)
12/2008 (20)
11/2008 (18)
10/2008 (9)
09/2008 (12)
08/2008 (6)
07/2008 (12)
06/2008 (10)
05/2008 (15)
04/2008 (19)




PomoDo e Pomodoro Technique
comentado por Luis
Flash SlideShow
comentado por Gilmar
50% do software é design
comentado por Daniel Lopes
Vetores Grátis - VectorLab Pack
comentado por louis vuitton
Texturas legais
comentado por thomas sabo kommt