Ist es möglich einen Block mit optionalen Argumenten in Ruby zu definieren?

7

Ich versuche, Funktionen dynamisch zu definieren, die zu einer anderen Funktion aufrufen, die einen Optionsparameter verwendet:

%Vor%

Ich möchte die verschiedenen Methoden auf MyClass auf diese zwei Arten aufrufen können (mit und ohne optionale Argumente):

%Vor%

Beim zweiten Anruf in die Minute sehe ich diese Warnung:

  

Warnung: mehrere Werte für einen Blockparameter (0 für 1)

  1. Gibt es eine Möglichkeit, den Block für die Methode "get_ *" zu schreiben, damit diese Warnung nicht erscheint?
  2. missbrauche ich define_method?
Readonly 16.01.2009, 19:45
quelle

3 Antworten

16

Die einzige Änderung, die Sie vornehmen müssen, ist args in *args zu ändern. % Co_de% gibt an, dass * ein Array optionaler Argumente für den Block enthält.

    
Gordon Wilson 16.01.2009, 19:58
quelle
5

Zwei Jahre später ... Ich weiß nicht ob es ein neues Feature mit Ruby 1.9.2 gibt, oder ob es auch in der Vergangenheit möglich war, aber das funktioniert:

%Vor%

Ergebnis ist:

%Vor%     
knut 25.03.2011 14:21
quelle
0

Ich bin damit einverstanden, dass Gordon * zu deinen Argumenten hinzufügt, damit es weggeht.

Eine andere Möglichkeit ist die Verwendung von method_missing ()

In etwa so:

%Vor%     
stjernstrom 16.01.2009 21:30
quelle

Tags und Links