Optionales Argument nach dem Splat-Argument

7

Hier ist mein Programm:

%Vor%

In Zeile 1 beschweren wir uns

  

tests.rb: 1: Syntaxfehler, unerwartet '=', erwartet ')'
  def berechnen (* Zahlen, Optionen = {})
  

sircapsalot 18.06.2013, 15:34
quelle

6 Antworten

8

Danke @maerics und @JorgWMittag -

Wenn Sie ein Splat haben, reserviert es alle Argumente, weshalb es mein zweites "Optionen" -Argument nicht mochte. Ich habe dieses Problem behoben, indem ich meine Argumente auf -

umgestellt habe %Vor%     
sircapsalot 18.06.2013, 15:42
quelle
9

Sie können nach einem Splat keine optionalen Parameter haben.

Das splat bedeutet "benutze alle verbleibenden Argumente", aber dann stellst du ein optionales Argument zur Verfügung. Wie könnte der Interpreter wissen, ob das letzte Argument Teil der "Nummern" splat oder der optionalen "Optionen" ist?

    
maerics 18.06.2013 15:38
quelle
6

Sie können nur obligatorische Argumente nach dem Splat-Argument haben. Optionale Argumente müssen vor dem Splat stehen.

Eine Pseudo-Regex für Parameterlisten in Ruby ist ungefähr so:

%Vor%

Hier ist ein Beispiel:

%Vor%     
Jörg W Mittag 18.06.2013 15:38
quelle
3
%Vor%     
Boris Stitnicky 18.06.2013 15:56
quelle
1

Schau dir an, wie extract_options! hinter Rails funktioniert.

Ссылка

    
garbagecollector 18.05.2015 22:44
quelle
1

Tatsächlich können Sie dies von Ruby 2.0 erreichen, indem Sie Schlüsselwortargumente verwenden. Wenn Sie eine Methode wie folgt berechnen:

%Vor%

Dann kannst du diese Methode folgendermaßen aufrufen:

%Vor%

Und Sie erhalten -3 als Ergebnis.

    
Nikola Todorovic 31.05.2015 22:36
quelle

Tags und Links