在传递包含变量的块时,从方法中访问变量

时间:2013-06-09 04:02:25

标签: ruby variables yield performance-monitor

据我所知,每次运行run_times时都会弹出一个run_times值并将其添加到fake_time。用我的测量方法,我应该收集那些并获得平均值。但我似乎无法从方法中获取值。

需要传递以下rspec:

it "returns the average time, not the total time, when running multiple times" do
  run_times = [8,6,5,7]
  fake_time = @eleven_am
  Time.stub(:now) { fake_time }
  average_time = measure(4) do
    fake_time += run_times.pop
end
  average_time.should == 6.5
end

这是我的代码:

def measure (n = 1)
  if n > 1 
    n.times { yield }

  else
    start = Time.now
    yield
    elapsed_time = Time.now - start
    elapsed_time

  end

end

提前谢谢!我已经坚持了一段时间,似乎无法得到任何工作。

1 个答案:

答案 0 :(得分:0)

n.times会返回n,不是吗?也就是说,如果measure4,则n会返回4,因此average_time4,而不是6.5