如何避免调用产生块两次的方法?

时间:2013-10-07 20:07:51

标签: ruby

我正在调用第三方API,它产生一个块并返回一个数组:

my.api.all arg: value do |ret|
  #block
end

我想以某种方式调用该方法来获取数组的大小:

array = my.api.all(arg: value)

if array.size > minValue
  #avoid calling all again, but how?
  my.api.all arg: value do |ret|
    #block
  end
end

然后我想避免再次调用该方法,但让块中的代码生成执行。

这是否有可能,或者有没有办法避免两次调用all方法?

1 个答案:

答案 0 :(得分:0)

如何将块存储在字符串中以及稍后eval

str = ""

array = my.api.all arg: value do |ret|
    str = <<-eos
        #code e.g.
        puts "block executed with arg: #{ret}"
    eos
  end

if array.size > minValue
  eval str
end