Ruby konvertiert Array in Funktionsargumente

94

Angenommen, ich habe ein Array. Ich möchte das Array an eine Funktion übergeben. Die Funktion erwartet jedoch zwei Argumente. Gibt es eine Möglichkeit, das Array im laufenden Betrieb in zwei Argumente umzuwandeln? Beispielsweise:

a = [0,1,2,3,4]
b = [2,3]
a.slice(b)

Würde einen Fehler in Ruby ergeben. Ich muss eingeben, a.slice(b[0],b[1])ich suche etwas eleganteres, wie in a.slice(foo.bar(b)) Danke.

user1134991
quelle

Antworten:

99

Sie können eine Arraymit dem *Operator (oder "splat") in eine Argumentliste umwandeln:

a = [0, 1, 2, 3, 4] # => [0, 1, 2, 3, 4]
b = [2, 3] # => [2, 3]
a.slice(*b) # => [2, 3, 4]

Referenz:

Johnsyweb
quelle
1
Ja, das ist perfekt. :)
Arup Rakshit
95

Benutze das

a.slice(*b)

Es heißt Splat-Operator

Sergio Tulentsev
quelle