我有一个采用代码块的方法.
def opportunity
  @opportunities += 1
  if yield
    @performances +=1
  end
end
我称之为:
opportunity { @some_array.empty? }
但是我如何传递多个代码块以便我可以使用yield两次,如下所示:
def opportunity
  if yield_1
    @opportunities += 1
  end
  if yield_2
    @performances +=1
  end
end
和:
opportunity {@some_other_array.empty?} { @some_array.empty? }
我知道这个例子可以在没有收益的情况下完成,但这只是为了说明.
hor*_*guy 61
您本身不能传递多个块,但是您可以传递多个块或lambdas:
使用1.9语法:
opportunity ->{ @some_array.empty? }, ->{ @some_other_array.empty? }
并在方法本身:
def opportunity(lambda1, lambda2)
  if lambda1.()
    @opportunities += 1
  end
  if lambda2.()
    @performances += 1
  end
end