Compreensão [ClassOne, ClassTwo] .each (&: my_method) [duplicate]
Possible Duplicate:
O que significa map (&: name) em Ruby?
Eu estava assistindo a um railscast e vi esse códig
[Category, Product].(&:delete_all)
Em relação à limpeza de um banco de dado
Eu perguntei sobre a linha no IRC e fui informado
(&:delete_all)
foi um atalho para
{|model| model.delete_all}
Eu testei isso com o seguinte
class ClassOne
def class_method
puts 1
end
end
class ClassTwo
def class_method
puts 2
end
end
[ClassOne, ClassTwo].each(&:class_method)
Eu recebi um erro dizendo
Wrong Argument type Symbol (expected Proc)
Eu também tentei
one = ClassOne.new
two = ClassTwo.new
[one, two].each(&:class_method)
Mas isso ainda falhou.
Se eu o modifiquei para ler
[one, two].each{|model| model.class_method}
Tudo funcionou como esperad
Então, o que faz&:delete_all
realmente fazer? Os documentos dizemdelete_all
é um método, por isso estou confuso sobre o que está acontecendo aqu