Ruby · Intermediário · Inglês · Técnico
proc
Objeto da classe Proc que guarda um bloco de código para ser chamado depois com call. É flexível com argumentos e seu return sai do método onde foi criado.
Onde usar
Surge quando você precisa guardar um bloco numa variável ou passá-lo adiante com &bloco. No code review, diferencie proc de lambda quando o return se comportar de forma inesperada.
Em código
dobro = Proc.new { |n| n.to_i * 2 }
puts dobro.call(4) # => 8
puts dobro.call # => 0 (nil.to_i)
puts dobro.(5) # => 10
puts dobro[6] # => 12Exemplos
I stored the block in a proc so I can call it later.
Guardei o bloco em um proc para poder chamá-lo depois.
A return inside a proc exits the whole method.
Um return dentro de um proc sai do método inteiro.
Cuidado
Não o confunda com lambda: proc ignora argumentos a mais ou a menos, e seu return encerra o método que o contém.
Sinônimos
procedimento
Origem
Abreviação de procedure, procedimento.