【发布时间】:2016-07-01 14:52:48
【问题描述】:
我有一个方法可以遍历一些记录并用它们做一些事情,可选地产生一个结果——类似于:
@evens = []
def foo(numbers)
numbers.each do |r|
even = r % 2 == 0
@evens << r if even
yield "#{r}: #{even}" if block_given?
end
end
我有第二种方法,它获取记录并将它们传递给第一种方法,类似于:
def bar(count)
numbers = (0..count).to_a
foo(numbers)
end
我想将此方法更改为也采用可选块,从而产生第一种方法的结果。到目前为止我想出了什么:
def bar(count)
numbers = (0..count).to_a
foo(numbers) do |result|
yield result if block_given?
end
end
这感觉比我应该需要的多两行和多一个if block_given? 检查。有没有更简洁的方式来简单地说“让这个方法调用产生的任何东西,如果有的话”?
【问题讨论】: