Duplicar posible:
What does map(&:name) mean in Ruby?entendimiento [ClassOne, ClassTwo] .Cada (Y: mi_metodo)
estaba viendo un Railscast y vio este código.
[Category, Product].(&:delete_all)
En lo que respecta a la limpieza de una base de datos.
me preguntó acerca de la línea de IRC y me dijeron
(&:delete_all)
era un atajo para
{|model| model.delete_all}
He probado esto con la siguiente
class ClassOne
def class_method
puts 1
end
end
class ClassTwo
def class_method
puts 2
end
end
[ClassOne, ClassTwo].each(&:class_method)
he recibido un error que dice
Wrong Argument type Symbol (expected Proc)
También probé
one = ClassOne.new
two = ClassTwo.new
[one, two].each(&:class_method)
Pero eso fracasaron.
Si lo modificó para leer
[one, two].each{|model| model.class_method}
Todo ha funcionado como se esperaba.
Entonces, ¿qué hace realmente &:delete_all
? Los documentos dicen delete_all
es un método, por lo que estoy confundido en cuanto a lo que está sucediendo aquí.
Esto es correcto; Si ejecutó su prueba en IRB, no funcionaría (suponiendo que ejecute Ruby 1.8.x). Inténtalo de nuevo en script/consola. –