Ruby tiene diferencias entre los procesos creados a través de Proc.new
y lambda
(o el operador ->()
en 1.9). Parece que Procs no lambda splat una matriz pasada a través de los argumentos del bloque; Los procs creados a través de lambda no.Diferencias entre Proc y Lambda
p = Proc.new { |a,b| a + b}
p[[1,2]] # => 3
l = lambda { |a,b| a + b }
l[[1,2]] # => ArgumentError: wrong number of arguments (1 for 2)
¿Alguien tiene alguna idea de las motivaciones detrás de este comportamiento?
posible que ya saben esto, pero esto funciona: 'l = lambda {| (a, b) | a + b}; l [[1,2]] # => 3' – Phrogz