web-dev-qa-db-fra.com

Étant donné un tableau d'arguments, comment envoyer ces arguments à une fonction particulière dans Ruby?

Pardonnez la question du débutant, mais dites que j'ai un tableau:

a = [1,2,3]

Et une fonction quelque part; disons que c'est une fonction d'instance:

class Ilike
  def turtles(*args)
    puts args.inspect
  end
end

Comment invoquer Ilike.turtles avec a comme si j'appelais (Ilike.new).turtles(1,2,3).

Je connais send, mais cela ne semble pas traduire un tableau en liste d'arguments.

Un parallèle de ce que je recherche est le Javascript apply, qui est équivalent à call mais convertit le tableau en une liste d'arguments.

66
Steven

Comme vous le savez, lorsque vous définissez une méthode, vous pouvez utiliser le * pour transformer une liste d'arguments en tableau. De même, lorsque vous appelez une méthode, vous pouvez utiliser le * pour transformer un tableau en une liste d'arguments. Donc, dans votre exemple, vous pouvez simplement faire:

Ilike.new.turtles(*a)
125
sepp2k