So entscheiden Sie, ob in einer Ruby-Methode ein optionales Argument angegeben wurde oder nicht

8

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

%Vor%

Der Nachteil bei diesem ist, dass nicht entschieden werden kann, ob kein Argument oder nil angegeben wurde.

benutzerdefinierte NoArgument als Standardwert

%Vor%

Ob nil angegeben wurde, kann entschieden werden, aber das gleiche Problem existiert für Instanzen von NoArgument .

Auswerten der Größe einer Ellipse

%Vor%

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.

    
johannes 02.01.2012, 21:12
quelle

2 Antworten

15

Jörg W Mittag hat das folgende Code-Snippet , mit dem Sie tun können, was Sie wollen:

%Vor%     
Andrew Grimm 02.01.2012, 21:18
quelle
4

Wie wäre es mit

? %Vor%     
Miquel 02.01.2012 21:27
quelle

Tags und Links