funciona este código como se esperaba (no hace nada, incluso no produce advertencia/errores):Rubí argumentos lambda
l = lambda {|i|}
l.call(1)
Este código produce advertencia (advertencia: los valores múltiples de un parámetro de bloque (0 a 1)):
l = lambda {|i|}
l.call
Y este código falla con el error (ArgumentError: número incorrecto de argumentos (0 a 2)):
l = lambda {|i, y|}
l.call
iésimo debería ese lambda requiere que se pasen todos los argumentos.
Y del segundo ejemplo veo que no lo es. ¿Por qué funciona cuando solo se da un argumento y funciona como se espera (falla con error) con más de un argumento?
PS: rubí 1.8.6 (2008-08-11 Patchlevel 287) [universal darwin9.0]
ACTUALIZACIÓN: he comprobado estas muestras con el rubí 1.9.1p376. Y funciona como se esperaba: el segundo ejemplo también produce un error. Parece que esta es una característica de la versión 1.8 (o < = 1.8)
Lo sentimos, pero no puedo encontrar una respuesta allí. ¿Podría señalar? –
Agregó un puntero :) – Trevoke
¡Gracias!Pero de todos modos, todavía no está claro por qué existe ese comportamiento (para ser correcto, existió) –