Als ich lief dies auf Rubin 2.3.1p112:Warum kann ich kein Standardargument rechts von einem Schwammargument verwenden?
def test(x, *y, z = 1)
puts x, y, z
end
ich diese Nachricht erhalten:
(repl):1: syntax error, unexpected '=', expecting ')'
def test(x, *y, z = 1)
von der anderen Seite, wenn ich die Position der Parameter y und z es funktioniert cahnge.
def test(x, z = 1, *y)
puts x, y, z
end
Warum ist es nicht möglich, diesen optionalen Parameter auf der rechten Seite des Schwammarguments zu verwenden?
Live-Code: https://repl.it/CaXU/2
Hinweis: Diese Frage unterscheidet sich von Optional argument after splat argument weil diese Frage zu einem Hash optionalen Parameter fragen, während dieses für einen einfachen nicht-Hash optional Paramenter fragen. Wenn es ein optionales Hash-Argument ist, gibt es keine Möglichkeit zu wissen, wie viele Argumente dem Hash und dem Schwamm-Argument zugewiesen werden. Im Fall eines optionalen Parameters, der kein Hash ist, wäre es jedoch sinnvoll, ein Element dem optionalen Parameter und den Rest dem Schwammargument zuzuordnen.
Wir brauchen mehr Informationen. Welche Version von Ruby laufen Sie? Bitte lesen Sie "[fragen]" einschließlich der verlinkten Seiten und "[mcve]". –
Danke @theTinMan. Ich habe die Frage modifiziert, indem ich die Ruby-Version und einen Live-Code-Link hinzugefügt habe. –
Ich denke du meinst "splat", obwohl "sponge" nicht ohne Reiz ist. –