Ich habe eine Methode mit einem optionalen Argument. Wie kann ich entscheiden, ob das Argument gegeben wurde oder nicht?
Ich habe die folgenden Lösungen gefunden. Ich stelle diese Frage, da ich mit keinem von ihnen völlig zufrieden bin. Gibt es da einen besseren?
nil
als Standardwert Der Nachteil bei diesem ist, dass nicht entschieden werden kann, ob kein Argument oder nil
angegeben wurde.
NoArgument
als Standardwert Ob nil
angegeben wurde, kann entschieden werden, aber das gleiche Problem existiert für Instanzen von NoArgument
.
Bei dieser Variante kann immer entschieden werden, ob das optionale Argument angegeben wurde.
Allerdings hat sich die Proc#arity
dieser Methode von 1 zu -1 geändert (nicht wahr, siehe Kommentar). Es hat immer noch den Nachteil, schlechter zu sein, zu dokumentieren und den ArgumentError manuell zu erhöhen.
Jörg W Mittag hat das folgende Code-Snippet , mit dem Sie tun können, was Sie wollen:
%Vor%Tags und Links ruby optional-parameters