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?
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%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.
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: Ссылка