Operador ||= em Ruby
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 ":http://blog.areacriacoes.com.br/2008/9/22/blocos, 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.