67 votes

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

Pardonnez ma question de débutant, mais disons 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 puis-je invoquer Ilike.turtles con a comme si j'appelais (Ilike.new).turtles(1,2,3) .

Je suis familier avec send mais cela ne semble pas traduire un tableau en une liste d'arguments.

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

126voto

sepp2k Points 157757

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

Ilike.new.turtles(*a)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X