Ruby · Essencial · Inglês · Técnico
block given
Método block_given? que diz se o método atual recebeu um bloco. Permite que o mesmo método funcione com ou sem bloco, chamando yield só quando ele existe.
Onde usar
Aparece em métodos que oferecem uma versão com bloco e outra sem, como File.open. Sem essa checagem, yield sem bloco lança LocalJumpError.
Em código
def rodar
return "sem bloco" unless block_given?
yield
end
p rodar # => "sem bloco"
p rodar { "com bloco" } # => "com bloco"Exemplos
Check block_given? before you yield.
Cheque block_given? antes de dar yield.
Without a block, yield raises LocalJumpError.
Sem bloco, o yield lança LocalJumpError.
Cuidado
Não o confunda com receber &bloco como parâmetro nomeado; block_given? só informa a presença, sem dar acesso ao bloco como objeto.