如何在while循环中保存变量

时间:2016-06-23 08:44:13

标签: ruby

我有一个变量x,它被设置为10.我想写一个while循环来增加它。我知道你可以很容易地使用for-loop来做到这一点,但是简单并不好玩。我的代码是:

def add(a)
   g = a + 1
   puts g
end

def loop(d)
   x = 0
   while x <= 4
       x += 1
       add(d)
   end
end

loop(9)

跑步时我得到9次,四次。如何让这段代码输出9,10,11,12?

2 个答案:

答案 0 :(得分:1)

您的问题是您说add(d)d是您的循环参数loop(d)。 Ruby盲目地告诉你:loop(9),所以这里d = 9并且保持等于9.你需要增加d的值。为此,add现在将返回递增的值,并将返回的值分配给d(在loop中)。

要解决您的问题,您需要执行以下操作:

def add(a)
   g = a + 1
   puts g
   g
end

def loop(d)
   x = 0
   while x <= 4
       x += 1
       d = add(d)
   end
end

loop(9)

但是,这是一个巨大的但是,你的代码根本不是红宝石的方式。

如果我这样做,我会这样做:

def loop(start_number, repeat_number, increment)
  repeat_number.times do
    start_number += increment
    p start_number
  end
end

loop(9, 4, 1)

答案 1 :(得分:0)

如果您想要使用while并且您的预期结果是Array数字9到12。

只需在while循环之前定义数组变量并按以下方式返回:

def loop(number)
  x, a = 0, []
  while x <= 3
    a << number + x
    x += 1
  end
  a
end

loop(9)
# => [9, 10, 11, 12]

更好的方式

但更好的方法是使用一些ruby函数,如timesmap

在这种情况下,我们使用timesmap

def loop(d)
  4.times.map{|i| d + i}
end

p loop(9)
# => [9, 10, 11, 12]

也许这会有所帮助。