Was ist eine schöne, saubere Möglichkeit, einen Options-Hash mit Standardwerten als Parameter in Ruby zu verwenden

7

Nehmen wir an, ich möchte eine Methode, die so heißt:

%Vor%

wo einige der Optionen Standardwerte haben:

%Vor%

Was ist ein schöner idiomatischer Rubin-Weg, dieses Standardverhalten in der Methodenimplementierung zu implementieren?

    
Pete Hodgson 10.06.2009, 19:00
quelle

4 Antworten

16

Wenn Sie Rails (nicht nur Ruby) verwenden, ist eine etwas kürzere Methode

%Vor%

Dies hat den zusätzlichen Vorteil, dass Sie mehrere Zeilen ein bisschen sauberer machen können:

%Vor%     
Topher Fangio 10.06.2009, 19:05
quelle
19
%Vor%     
Steve Madsen 10.06.2009 19:02
quelle
4

Normalerweise empfiehlt es sich, sichere Standardwerte in einen Hash einzufügen, der als Konstante deklariert ist. Zum Beispiel:

erfordert 'ostruct'

%Vor%

Beim Zusammenführen von Hash-Objekten ist es wichtig zu beachten, dass die String- und Symbol-Tasten unterschiedlich sind und nicht wie erwartet kombiniert werden. In der Rails-Umgebung können Sie immer eine mit Hash # symbolize_keys konvertieren oder indem Sie sie als HashWithIndifferentAccess deklarieren, die den Unterschied für Sie abbildet.

    
tadman 11.06.2009 15:51
quelle
3

Falls jemand dies von Google sieht, ist diese Frage alt und veraltet. Die moderne und viel sauberere Antwort (mit Ruby & gt; 2.0) besteht darin, Schlüsselwortargumente zu verwenden. Sie haben mehrere Vorteile.

1..) Sie können den Namen des Schlüssels im Hash angeben. (in Rubin & gt; 2.1)

2.) Sie müssen den Hash in der Funktion nicht "entpacken". Die Schlüssel werden Ihnen einfach als Variablen übergeben. (also müssen Sie nicht wie speed = opts[:speed] tun)

3.) Es ist sauberer

%Vor%

RUBY docs siehe hier: Ссылка

und eine gute kleinen Blog-Post hier: Ссылка

    
bwest87 07.01.2015 03:07
quelle

Tags und Links