ExpertiDict

Ruby · Intermediário · Inglês · Técnico

closure

/ˈkloʊʒɚ/substantivo

Bloco, proc ou lambda que carrega as variáveis do contexto onde foi criado, mesmo depois que esse contexto terminou de executar.

Onde usar

Permite fábricas de funções e contadores sem classes. No code review, atenção a closures que capturam objetos grandes e impedem o garbage collector de liberá-los.

Em código

def contador
  n = 0
  -> { n += 1 }
end
c = contador
c.call
puts c.call  # => 2

Exemplos

The lambda is a closure over the counter variable.

O lambda é uma closure sobre a variável do contador.

This closure keeps the whole request object alive.

Essa closure mantém o objeto inteiro da requisição vivo.

Cuidado

A closure captura a variável, não uma cópia do valor: se ela mudar depois, o bloco enxerga o novo valor.

Sinônimos

fechamento

Veja também

Todos os termos de Ruby