ruby block的用途和理解
在论坛讨论问题,自己写体会抄回来
常用到的场合:
1. scope 当需要动态参数时
scope :aged_0, lambda{ where("created_at IS NULL OR created_at < ?", Date.today + 30.days).joins(:owner) }scope :aged_1, lambda{ |d_time|where("created_at IS NULL OR created_at < ?", d_time).joins(:owner) }
lambda{post :create, :user => @attr}.should_not change(User, :count)
def cross_loop(array_a, array_b, process) array_a.each do |element_a| array_b.each do |element_b| process.call(element_a, element_b) end endendcross_loop([1,2,3], [3,4,5], lambda{|x,y| puts x + y})cross_loop([1,2,3], [3,4,5], lambda{|x,y| puts x * y})
def cross_loop(array_a, array_b, process) array_a.each do |element_a| array_b.each do |element_b| self.send(process, element_a, element_b) end endenddef plus(a, b); puts a + b; enddef multiply(a, b); puts a * b; endcross_loop([1,2,3], [3,4,5], 'plus')cross_loop([1,2,3], [3,4,5], 'multiply')