2016-07-27 14 views
1

Für Ruby-Methoden, die gewünschte Stichwort Syntax schönRubin erforderlich Stichwort Argumente

def foo(bar:, baz:) 
    : 
end 

foo(:bar => true, :baz => false) # OK 
foo(:bar => true) # missing keyword argument error 

Kann man ‚Splat‘ die Liste der erforderlichen Schlüsselwörter mit irgendeiner Art von Magie? das heißt

required_keywords = [:bar, :baz] 
def foo(magic(required_keywords)) 
    : 
end 

erwarte ich nicht, aber ich bin oft überrascht, mit dem, was Rubin zu tun überzeugen.

+3

Siehe auch: http://StackOverflow.com/Questions/31810695/define-method-with-predefined-keyword-arguments – Dogbert

Antwort

0

Die Splat (*) und Doppel SPLA t (**) Operatoren erlauben ein Verfahren, eine beliebige Anzahl von Argumenten zu übernehmen. Der erste wird die Argumente in einem Array speichern und der letztere wird sie in einem Hash speichern.

Es gibt auch den Optionen-Hash, der ein optionaler Hash-Parameter ist, der normalerweise als letzter Parameter bei der Methodendeklaration enthalten ist. Es kann auch eine beliebige Anzahl von Argumenten enthalten (eigentlich sind sie reine Hash-Einträge).

In beiden der oben genannten Fälle ist die Anzahl der Argumente jedoch unbekannt, wenn Sie die Methode deklarieren. Daher können Sie nicht eine unbekannte Anzahl von Argumenten "erforderlich" machen.

Weitere Informationen zu splat, double splat und erforderlichen Schlüsselwortparametern finden Sie unter this blog post.