Ruby · Essencial · Inglês · Técnico
yield
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.