Ich habe eine Methode, die so aussieht:Ruby - Keyword-Argumente - Können Sie alle Keyword-Argumente als Hash behandeln? Wie?
def method(:name => nil, :color => nil, shoe_size => nil)
SomeOtherObject.some_other_method(THE HASH THAT THOSE KEYWORD ARGUMENTS WOULD MAKE)
end
Für jeden Anruf gegeben, ich eine beliebige Kombination von optionalen Werten annehmen kann. Ich mag die genannten Argumente, weil ich mir einfach die Signatur der Methode ansehen kann, um zu sehen, welche Optionen verfügbar sind.
Was ich nicht weiß ist, ob es eine Abkürzung für das gibt, was ich im Codebeispiel oben in Großbuchstaben beschrieben habe.
Zurück in den alten Tagen, verwendet es zu sein:
def method(opts)
SomeOtherObject.some_other_method(opts)
end
Elegant, schlicht Betrug, fast.
Gibt es eine Verknüpfung für diese Schlüsselwort Argumente oder muss ich meine Optionen Hash in der Methodenaufruf wiederherstellen?
Nein, ich bin an alle optionalen, mit dem Namen Keyword-Parameter in eine Hash-Sammlung. Ich versuche nicht, einen neuen Options-Hash zu erstellen. Ich möchte einen Hash von {: name => val,: color => val, etc.}, die in der Methodensignatur benannt sind. –
Ich auch. Ich bin überrascht, dass dies nicht eingebaut ist .... – danielricecodes