die Anfänger Frage vergeben, aber sagen, ich habe ein Array:Wie bekomme ich ein Array von Argumenten, wie sende ich diese Argumente an eine bestimmte Funktion in Ruby?
a = [1,2,3]
und eine Funktion irgendwo; Lassen Sie uns sagen, dass es eine Instanz Funktion:
class Ilike
def turtles(*args)
puts args.inspect
end
end
Wie rufe ich Ilike.turtles
mit a
, als ob ich (Ilike.new).turtles(1,2,3)
forderten.
Ich bin vertraut mit send
, aber dies scheint ein Array in eine Argumentliste nicht zu übersetzen.
Eine Parallele von dem, was ich suche, ist das Javascript apply
, das call
entspricht aber das Array in eine Argumentliste konvertiert.
Fantastisch. Aufgrund Ihrer ausgezeichneten Antwort habe ich eine ausführlichere Beschreibung dieser Technik in [Wikibooks] (http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Variable_Length_Argument_List.2C_Asterisk_Operator) gefunden. Dies ist in der Tat vollkommen vernünftig, wenn die parallele Notation andersherum geht. Oh, Ruby tatsächlich. Ich habe auch bemerkt, dass Sie Ihre eigenen Argumente ohne peinliches "a.unshift" Zappeln mit 'Ilike.new.turtles (1,2,3, * a)' vorsetzen können, obwohl das Nachpendeln ein solches Manöver zu erfordern scheint. –
@StevenXu In Ruby 1.9 können Sie auch für "Postpending" splat. a = [1,2]; b = [4,5]; p (0, * a, 3, * b, 6) # => "0 \ n1 \ n2 \ n3 \ n4 \ n5 \ n6" ' – Phrogz
Fantastisch beantwortet! – RubyFanatic