Ruby splat in Bereichen und Arrays verstehen

9

Ich versuche den Unterschied zwischen *(1..9) und [*1..9]

zu verstehen

Wenn ich sie Variablen zuweise, arbeiten sie auf die gleiche Weise

%Vor%

Aber die Dinge werden komisch, wenn ich versuche, *(1..9) und [*1..9] direkt zu benutzen.

%Vor%

Ich vermute, ein Teil des Problems liegt bei der Voreinstellung des Operators? Aber ich bin mir nicht sicher, was genau los ist. Warum kann ich *(1..9) nicht verwenden? Ich kann [*1..9] verwenden?

    
Dty 26.09.2011, 15:23
quelle

1 Antwort

9

Ich glaube, das Problem ist, dass Splat nur als ein Wert verwendet werden kann, das heißt, es muss von etwas empfangen werden.

Ihr Beispiel von *(1..9).map schlägt fehl, weil es keinen Empfänger für den Splat gibt, aber der [*1..9].map funktioniert, weil das Array, das Sie erstellen, der Empfänger des Splat ist.

UPDATE: Weitere Informationen zu diesem Thema (vor allem der letzte Kommentar): Where Ist es legal, Ruby Splat Operator zu verwenden?

    
bheeshmar 26.09.2011, 15:28
quelle

Tags und Links