Tengo dos ejemplos que dan el mismo resultado.Cuando los bloques son más útiles que las funciones (ruby)?
Con bloque:
def self.do_something(object_id)
self.with_params(object_id) do |params|
some_stuff(params)
end
end
def self.with_params(object_id, &block)
find_object_by_id
calculate_params_hash
block.call(params_hash)
end
y con el método:
def self.do_something(object_id)
some_stuff(self.get_params(object_id))
end
def self.get_params(object_id)
find_object_by_id
calculate_params_hash
params_hash
end
La segunda solución parece más sencillo, pero he encontrado algunos usos de la primera de ellas en nuestro código de la aplicación. Mi pregunta es: ¿en qué situación se recomienda la primera? ¿Cuáles son los pros y los contras de cada uno?
En su ejemplo, no creo que haya una razón para usar el objeto Proc. El objetivo de los objetos de Proc es hacerlos persistir en el entorno léxico y pasarlos a otras funciones como argumentos. –
agregó "proc" como etiqueta. –
¿Qué significa 'some_stuff (params)', devuelve algo? – nkm