Возможный дубликат:
Что означает map (&: name) в Ruby?
Я смотрел railscast и видел этот код.
[Category, Product].(&:delete_all)
Что касается очистки базы данных.
Я спросил о линии в IRC и сказал
(&:delete_all)
был ярлыком для
{|model| model.delete_all}
Я проверил это со следующим
class ClassOne
def class_method
puts 1
end
end
class ClassTwo
def class_method
puts 2
end
end
[ClassOne, ClassTwo].each(&:class_method)
Я получил сообщение об ошибке
Wrong Argument type Symbol (expected Proc)
Я также пробовал
one = ClassOne.new
two = ClassTwo.new
[one, two].each(&:class_method)
Но это все еще не удалось.
Если я изменил его, прочитав
[one, two].each{|model| model.class_method}
Все работало, как ожидалось.
Итак, что делает &:delete_all
на самом деле? Документы говорят, что delete_all
- это метод, поэтому я смущен относительно того, что здесь происходит.