user.try(:[],:name)
Das erste Mal habe ich diesen Code gesehen "Warum fügst du ein leeres Array in den Methodenteil ein ...?" Ich dachte. Es ist eine schlechte Sache, dass ich die Ruby (Rails) Grammatik übersprungen habe ...
In Active Support enthaltene Methoden (können nicht nur mit Ruby verwendet werden) Verwenden Sie die angegebene Methode nur, wenn das Zielobjekt nicht Null ist Geben Sie die Methode an, die Sie als erstes Argument verwenden möchten, und das Argument (falls erforderlich) als zweites Argument
user = {name: "test"}
# user[:group]Verursacht einen Methodenfehler, da Null ist
user[:group].replace("A")
# => NoMethodError: undefined method 'replace' for nil:NilClass
#Wenn Sie try auf einem Null-Ziel verwenden, tritt kein Fehler auf, nur Null wird zurückgegeben
user[:group].try(:replace,"A")
=> nil
Das ist das Hauptthema, aber Rubys Hash hat eine [] Methode. Nimmt den Schlüsselnamen als Argument und gibt seinen Wert zurück.
user.[] :name
=> "test"
#Dies ist Benutzer[:name]Gleich wie
Übrigens kann auch "+" usw. als Methode verwendet werden.
user[:name].+ 2
=> "test2"
In diesem Fall handelt es sich um eine Kombination aus try und dieser Methode
user.try(:[],:name)
=> "test"
Das Ergebnis wird zurückgegeben.
Es fiel mir schwer, [] zu verstehen, weil ich es nicht leicht traf. Studieren Sie die Rubin / Rails-Grammatik erneut ...
Recommended Posts