【发布时间】:2012-03-31 21:06:33
【问题描述】:
我有两个给出相同结果的示例。
有块:
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
和方法:
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
第二种解决方案似乎更直接,但我在我们的应用程序代码中发现了第一种解决方案的一些用法。我的问题是:在哪种情况下推荐第一个?各有什么优缺点?
【问题讨论】:
-
在您的示例中,我认为没有理由使用 Proc 对象。 Proc 对象的全部意义在于使它们在词法环境中持续存在,并将它们作为参数传递给其他函数。
-
some_stuff(params)有什么作用,它会返回什么吗? -
它是“方法”,而不是 ruby 中的“功能”。
标签: ruby-on-rails ruby block proc