Ich versuche den Unterschied zwischen *(1..9)
und [*1..9]
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.
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?
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?