Kullanabileceğimiz çok sayıda kullanım ve yer olabilir tap. Şimdiye kadar sadece 2 kullanımını buldum tap.
1) Bu yöntemin asıl amacı olan dokunun zinciri içinde ara sonuçlar işlemleri gerçekleştirmek üzere bir metot zinciri. yani
(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) Hiç kendinizi bir nesne için bir yöntem çağırırken buldunuz mu ve dönüş değeri sizin istediğiniz gibi değil mi? Belki bir karmada saklanan bir dizi parametreye rastgele bir değer eklemek istediniz. İle güncelleyinHash. [] İle , ancak params hash'i yerine çubuğu geri alırsınız , bu yüzden onu açıkça döndürmeniz gerekir. yani
def update_params(params)
params[:foo] = 'bar'
params
end
Burada bu durumu aşmak için tapyöntem devreye giriyor. Sadece nesnede çağırın, ardından çalıştırmak istediğiniz kodu içeren bir bloğa dokunun. Nesne bloğa verilecek, sonra iade edilecektir. yani
def update_params(params)
params.tap {|p| p[:foo] = 'bar' }
end
Düzinelerce başka kullanım durumu var, bunları kendiniz bulmaya çalışın :)
Kaynak:
1) API Dock Nesnesine dokunun
2) kullanmanız gereken beş yakut yöntemi
User.new.tap &:foobar