ExpertiDict

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

proc

/prɑk/substantivo

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]  # => 12

Exemplos

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.

Veja também

Todos os termos de Ruby