Es kann eine Reihe von Verwendungszwecken und Orten geben, an denen wir sie möglicherweise verwenden können tap
. Bisher habe ich nur folgende 2 Verwendungen von gefunden tap
.
1) Der Hauptzweck dieser Methode besteht darin, eine Methodenkette zu erschließen , um Operationen an Zwischenergebnissen innerhalb der Kette durchzuführen. dh
(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) Haben Sie jemals festgestellt, dass Sie eine Methode für ein Objekt aufgerufen haben und der Rückgabewert nicht dem entspricht, was Sie wollten? Vielleicht wollten Sie einem in einem Hash gespeicherten Parametersatz einen beliebigen Wert hinzufügen. Sie aktualisieren es mit Hash. [] , Aber Sie zurück Bar anstelle der params - Hash, so haben Sie es zurück explizit. dh
def update_params(params)
params[:foo] = 'bar'
params
end
Um diese Situation hier zu überwinden, tap
kommt die Methode ins Spiel. Rufen Sie es einfach für das Objekt auf und tippen Sie anschließend auf einen Block mit dem Code, den Sie ausführen möchten. Das Objekt wird dem Block übergeben und dann zurückgegeben. dh
def update_params(params)
params.tap {|p| p[:foo] = 'bar' }
end
Es gibt Dutzende anderer Anwendungsfälle. Versuchen Sie, sie selbst zu finden :)
Quelle:
1) API Dock Object Tap
2) Fünf-Ruby-Methoden, die Sie verwenden sollten
User.new.tap &:foobar