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

Ruby 如何避免调用两次生成块的方法?,ruby,Ruby,我正在调用第三方API,该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 然

我正在调用第三方API,该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
方法两次?

将块存储在字符串中,然后
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
str=“”
array=my.api.all arg:value do | ret|

str=在执行块时您有权访问返回的数组吗?@fotanus我没有权限访问块中返回的数组