Il pourrait y avoir un certain nombre d'utilisations et d'endroits où nous pourrions être en mesure d'utiliser tap. Jusqu'à présent, je n'ai trouvé que 2 utilisations suivantes de tap.
1) L'objectif principal de cette méthode est de puiser dans une chaîne de méthodes, afin d'effectuer des opérations sur des résultats intermédiaires au sein de la chaîne. c'est à dire
(1..10).tap { |x| puts "original: #{x.inspect}" }.to_a.
tap { |x| puts "array: #{x.inspect}" }.
select { |x| x%2 == 0 }.
tap { |x| puts "evens: #{x.inspect}" }.
map { |x| x*x }.
tap { |x| puts "squares: #{x.inspect}" }
2) Vous êtes-vous déjà retrouvé à appeler une méthode sur un objet, et la valeur de retour ne correspond pas à ce que vous vouliez? Vous souhaitiez peut-être ajouter une valeur arbitraire à un ensemble de paramètres stockés dans un hachage. Vous le mettez à jour avec Hash. [] , Mais vous récupérez la barre au lieu du hachage des paramètres, vous devez donc le renvoyer explicitement. c'est à dire
def update_params(params)
params[:foo] = 'bar'
params
end
Pour surmonter cette situation ici, la tapméthode entre en jeu. Appelez-le simplement sur l'objet, puis appuyez sur un bloc avec le code que vous vouliez exécuter. L'objet sera cédé au bloc, puis retourné. c'est à dire
def update_params(params)
params.tap {|p| p[:foo] = 'bar' }
end
Il existe des dizaines d'autres cas d'utilisation, essayez de les trouver vous-même :)
Source:
1) API Dock Object tap
2) cinq-ruby-methods-you-should-be-using
User.new.tap &:foobar