如何从循环中捕获每个值并将其分配给数组? [红宝石]

时间:2012-05-08 13:53:53

标签: ruby arrays loops capture fibonacci

我正在尝试从Fibonacci方法中捕获值并将其连接到数组。但是,不是将循环中的每个值赋给数组,而是仅返回最后一个值。有没有办法解决?谢谢。


def fib_up_to(max)
    i1, i2 = 1, 1
    while i1 <= max
        yield i1
        i1, i2 = i2, i1+i2
    end
end

def capture_arr(val) $a = [] $a << val end

fib_up_to(1000) do |f| capture_arr(f) end

p $a # => [987]

2 个答案:

答案 0 :(得分:8)

capture_arr中,您在每次调用时将数组重置为空,然后再向其中添加元素。试试这个:

def capture_arr(val)
  $a ||= []
  $a << val
end

答案 1 :(得分:0)

你必须尝试这个

def fib_up_to(max)

i1,i2 = 1,1

而i2&lt; = max

i1, i2 = i2, i1+i2

I1

a = [fib_up_to(1000)]

p a

感谢的