2009-05-17 13 views

Respuesta

15

Utilice *rest. aquí hay un lindo y pequeño tutorial.

22

utilizar el operador splat *

def foo(a,b,c,*others) 
    # this function has at least three arguments, 
    # but might have more 
    puts a 
    puts b 
    puts c 
    puts others.join(',') 
end 
foo(1,2,3,4,5,6,7,8,9) 
# prints: 
# 1 
# 2 
# 3 
# 4,5,6,7,8,9 
6

(Si pudiera agregar un comentario a la respuesta aceptada, lo haría, pero no tengo suficientes puntos).

Advertencia: Tenga cuidado al hacerlo para los métodos que procesan datos generales. Es una gran pieza de azúcar de sintaxis, pero son límites a la cantidad de argumentos que puede pasar a un método antes de obtener un SystemStackError. Llegué a ese límite usando redis.mapped_mget *keys. Además, el límite cambiará dependiendo de dónde use el operador splat. Por ejemplo, al ejecutar localmente la palanca, puedo proyectar matrices de más de 130,000 elementos a un método. Aunque se ejecuta dentro de un actor de celuloide, ese límite puede ser inferior a 16,000 elementos.

Cuestiones relacionadas