Perdone la pregunta principiante, pero decir que tengo una matriz:Dada una serie de argumentos, ¿cómo envío esos argumentos a una función particular en Ruby?
a = [1,2,3]
y una función de alguna parte; digamos que es una función de ejemplo:
class Ilike
def turtles(*args)
puts args.inspect
end
end
¿Cómo se invocan Ilike.turtles
con a
como si estuviera llamando (Ilike.new).turtles(1,2,3)
.
Estoy familiarizado con send
, pero esto no parece traducir una matriz a una lista de argumentos.
Un paralelo de lo que estoy buscando es el Javascript apply
, que es equivalente a call
pero convierte la matriz en una lista de argumentos.
Fantástico. En función de su excelente respuesta, he encontrado una explicación más detallada de esta técnica en [Wikilibros] (http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Variable_Length_Argument_List.2C_Asterisk_Operator). Esto es realmente perfectamente razonable dada la notación paralela yendo por el otro lado. Oh, Ruby de hecho. También me he dado cuenta de que puede anteponer sus propios argumentos sin incomodar 'a.unshift' inquieto al usar' Ilike.new.turtles (1,2,3, * a) ', aunque el post-envío parece requerir tal maniobra. –
@StevenXu En Ruby 1.9 también puede apuntar a 'postpendiente'. 'a = [1,2]; b = [4,5]; p (0, * a, 3, * b, 6) # => "0 \ n1 \ n2 \ n3 \ n4 \ n5 \ n6" ' – Phrogz
¡Respuesta fantástica! – RubyFanatic