2009-04-02 8 views

Antwort

13

Es ist "der Splat" -Operator. Es kann verwendet werden, um Arrays und Bereiche zu explodieren und Werte während der Zuweisung zu sammeln.

Hier werden die Werte in einer Zuordnungs werden gesammelt:

a, *b = 1,2,3,4 

=> a = 1 
    b = [2,3,4] 

In diesem Beispiel werden die Werte in der inneren Anordnung (die [3,4] one) aufgelöst wird und mit dem enthaltenden Array gesammelt:

a = [1,2, *[3,4]] 

=> a = [1,2,3,4] 

Sie können Funktionen definieren, die Argumente in einem Array sammeln:

def foo(*args) 
    p args 
end 

foo(1,2,"three",4) 

=> [1,2,"three",4] 
+1

Warum wurde dies downvoted? Meine Antwort ging nicht auf einen Aspekt mit der Begründung ein, dass ich nicht wüsste, welches Bit das OP verwirrte, aber das ist großartig für den Splat-Operator. –

8

Well:

  • require pp importiert die recht-Druckfunktionalität
  • p ist ein ziemlich Druckverfahren mit varargs, was ziemlich Abdrücken jedes Argument
  • * bedeutet „das Argument erweitern in varargs "anstatt es als ein einziges Argument zu behandeln
  • 1..10 ist range sequence syntax in Ruby

Erklärt dies ausreichend? Wenn nicht, bitte erläutern Sie, welches Bit verwirrend ist.

+0

+1 für ac Ancise und purty antworten, wie die 50K Marke wimmelt ... –

Verwandte Themen