Ruby · Avançado · Inglês · Técnico
to proc
Método que converte um objeto em Proc quando ele é passado com &. Symbol, Method e Hash já o têm; classes próprias podem defini-lo para valer como bloco.
Onde usar
Aparece na explicação de map(&:nome) e ao criar objetos chamáveis que se encaixam em métodos que recebem bloco, como um validador reaproveitável.
Em código
class Multiplicador
def initialize(n); @n = n; end
def to_proc = ->(x) { x * @n }
end
triplo = Multiplicador.new(3)
p [1, 2, 3].map(&triplo) # => [3, 6, 9]
p({ a: 1 }.to_proc.call(:a)) # => 1Exemplos
Define to_proc so the object works with the ampersand.
Defina to_proc para o objeto funcionar com o e comercial.
Symbol and Hash both implement to_proc.
Symbol e Hash implementam to_proc.
Cuidado
Precisa devolver um Proc de verdade; qualquer outro tipo causa TypeError no uso do &.