ExpertiDict

Ruby · Essencial · Inglês · Técnico

yield

/jiːld/palavra-chave

Palavra-chave que executa o bloco passado ao método atual, entregando argumentos a ele. O valor do bloco é o valor da expressão yield.

Onde usar

Você a usa ao escrever iteradores próprios, que deixam um espaço para o chamador. Chamar yield sem bloco levanta LocalJumpError, por isso se verifica block_given? antes.

Em código

def repete(vezes)
  vezes.times { |i| yield i }
end
repete(3) { |i| puts "volta #{i}" }

Exemplos

The method yields each row to the block.

O método entrega cada linha ao bloco.

It raised LocalJumpError because I called yield without a block.

Deu LocalJumpError porque chamei yield sem bloco.

Cuidado

Não é o yield de geradores de outras linguagens, que pausa a função; em Ruby ele só chama o bloco.

Origem

Do inglês yield, ceder ou entregar.

Veja também

Todos os termos de Ruby