Mam dwa przykłady, które dają taki sam wynik.Kiedy bloki są bardziej przydatne niż funkcje (ruby)?
Z bloku:
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
i metody:
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
Drugie rozwiązanie wydaje się proste, ale znalazłem kilka zwyczaje pierwsza w naszym kodzie aplikacji. Moje pytanie brzmi: w jakiej sytuacji zaleca się pierwszą? Jakie są plusy i minusy każdego z nich?
W twoim przykładzie nie wierzę, że istnieje powód do używania obiektu Proc. Cały obiekt obiektów Proc polega na utrzymywaniu ich w środowisku leksykalnym i przekazywaniu ich do innych funkcji jako argumentów. –
dodał "proc" jako tag. –
Co robi 'some_stuff (params)', czy zwraca coś? – nkm