ExpertiDict

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

lazy

/ˈleɪzi/método

Método que transforma um enumerável em um Enumerator::Lazy, em que map e select só são calculados quando o resultado é pedido, elemento por elemento. Permite trabalhar com sequências infinitas.

Onde usar

Aparece em pipelines sobre arquivos grandes ou ranges infinitos, evitando arrays intermediários. No fim é preciso forçar o cálculo com first, to_a ou force.

Em código

r = (1..Float::INFINITY).lazy
pares = r.select(&:even?).map { |n| n * n }
p pares.first(3)  # => [4, 16, 36]

Exemplos

Make it lazy so we don't load the whole file.

Deixe preguiçoso para não carregar o arquivo inteiro.

A lazy range can be infinite.

Um range preguiçoso pode ser infinito.

Cuidado

Sem lazy, (1..Float::INFINITY).map trava tentando construir tudo; e em coleções pequenas o lazy raramente compensa.

Sinônimos

avaliação preguiçosa

Veja também

Todos os termos de Ruby