user.try(:[],:name)
La première fois que j'ai vu ce code "Pourquoi mettez-vous un tableau vide dans la partie méthode ...?" J'ai pensé. C'est une mauvaise chose que j'ai sauté la grammaire Ruby (Rails) ...
Méthodes incluses dans Active Support (ne peuvent pas être utilisées uniquement avec Ruby) Utilisez la méthode spécifiée uniquement lorsque l'objet cible n'est pas nul Donnez la méthode que vous souhaitez utiliser comme premier argument et son argument (si nécessaire) comme deuxième argument
user = {name: "test"}
# user[:group]Provoque une erreur de méthode car est nul
user[:group].replace("A")
# => NoMethodError: undefined method 'replace' for nil:NilClass
#Si vous utilisez try sur une cible nil, aucune erreur ne se produira, seul nil sera retourné
user[:group].try(:replace,"A")
=> nil
C'est le sujet principal, mais Ruby's Hash a une méthode []. Prend le nom de la clé comme argument et renvoie sa valeur.
user.[] :name
=> "test"
#C'est l'utilisateur[:name]Pareil que
En passant, "+" etc. peut également être utilisé comme méthode.
user[:name].+ 2
=> "test2"
Dans ce cas, c'est une combinaison d'essayer et de cette méthode
user.try(:[],:name)
=> "test"
Le résultat sera retourné.
J'ai eu du mal à comprendre [] parce que je ne l'ai pas frappé facilement. Réétudier la grammaire rubis / rails ...
Recommended Posts